晨雾中,一座木桥跨过平静的水面,通向对岸。

产品笔记

不托管密码的连接

密码已经保存在企业的 Active Directory 中。如何在不复制密码哈希、不新设入站连接端点的前提下添加现代登录方式?Authrim Relay 正是为此而设计的。

从无法改变的前提出发

员工账户保存在Active Directory中。密码策略、有效期和离职停用,也一直由它管理。这套系统已经运行多年。

现在想加入通行密钥、整理多因素认证、为更多SaaS提供SSO。目标明确,但第一步总会遇到同一个问题:在哪里验证密码?

有些方案把密码哈希同步到云端,有些则请内部目录验证。选择时需要确认凭据放在哪里、由哪一侧建立连接,以及谁负责维护这条路径。

WordWarden让LDAP/AD继续负责验证,同时提供连接路径选择。对于不想公开新入站端点的组织,Authrim Relay使用出站连接。

WordWarden负责什么

Authrim WordWarden是一个目录连接器。它是部署在LDAP/AD附近的小服务,接收用户名和密码,向目录查询,再返回验证结果。

登录界面、会话、通行密钥、邮箱验证码、面向应用的联合身份认证、审计关联和身份映射由Authrim管理。WordWarden只在目录附近执行验证

连接方向不同,需要配置和维护的网络组件也不同。

谁向谁建立连接

WordWarden有三种连接方式,区别在于组织网络是否需要公开入站端点。

组织内部网络 Authrim(云端) 边界 Direct HTTPS WordWarden 需要公开端点 Authrim 由Authrim连接公开的接收端点 Cloudflare Tunnel WordWarden + cloudflared 主机不直接公开 Authrim cloudflared向外连接,经由Cloudflare隧道 Authrim Relay WordWarden 仅建立出站连接 Authrim Relay(Durable Object) WordWarden向外连接,无需入站端点
箭头表示谁发起连接。Direct HTTPS由Authrim连接公开端点。Tunnel和Relay都从内部向外连接:前者由独立的cloudflared进程维持,后者由WordWarden自身维持。

哪一种适合自己的环境

如果新部署不希望增加入站访问,可以先考虑Relay。已有的公开基础设施或隧道也有利用价值。以下是选择方案的例子,并非实际客户部署案例。

Authrim Relay:保留内部AD,不增加外部入站访问

例如,总部运行AD、公开新服务器需要额外审批的企业;或者不允许外部连接校园LDAP网络的大学。WordWarden主动连接Authrim,无需在内部网络新增公开入站端口。

不需要新公开端点,也不需要独立隧道进程。前提是允许WebSocket出站通信,并继续监控WordWarden及其连接。如果网络禁止一切外部通信,Relay也无法使用。

Cloudflare Tunnel:沿用已有隧道运维

如果组织已经通过Cloudflare Tunnel发布内部工具,并有团队负责cloudflared更新和路由,可以把WordWarden纳入同样的流程,无需新增入站端口。

需要配置让Authrim请求到达连接器的主机名与路径,并维护隧道。内部主机不直接接收入站连接,但请求会经由Cloudflare的路径到达。

Direct HTTPS:沿用现有API公开基础设施

企业、大学或研究机构可能已有负责DMZ和反向代理的团队。为Authrim提供可访问的HTTPS端点,就能沿用现有证书管理、访问日志和监控流程。

无需维持额外的隧道或Relay连接。相应地,组织需要允许入站路径,并负责公开端点的保护与维护。公开的是连接器的HTTPS接口,不是把LDAP/AD端口直接暴露到互联网。

无论哪种方式,都要在能够访问LDAP/AD的位置运行WordWarden。并不是学术机构就必须选某一种,而是根据现有基础设施和网络策略来选择。

Authrim Relay:从内部发起的连接

Relay模式下,WordWarden从组织内部通过WebSocket连接Authrim。WebSocket会保持通信路径,让双方都能通过它发送消息。

WordWarden保持连接并等待。有人登录时,Authrim通过同一路径发出“请验证这个用户”的请求,WordWarden查询内部目录,再返回结果。

这就像从组织内部拨出电话后保持通话,对方也可以开口说话。每次请求都不需要从外部重新连接内部网络。

这样,目录所在网络不必为此公开URL,也减少了新公开主机名、证书和WAF的管理。仍需允许出站连接、维护WordWarden并监控连接状态。

技术补充:WebSocket与公开入站端口有什么不同

区别在于由谁首先建立连接。Direct HTTPS需要组织提供Authrim可访问的端点;Relay则由内部WordWarden向Authrim建立加密WebSocket连接(wss)。

常见的有状态防火墙或NAT会跟踪内部发起的连接,并允许该连接的返回流量。因此,WordWarden无需公开接收外部新连接的端口,也无需配置端口转发,就能收到验证请求。

这并不意味着通信不使用端口。通常wss使用目标端的TCP 443端口。防火墙或代理需要允许到Relay的出站访问和持续WebSocket连接。断线期间无法通过该路径接收请求,因此也需要监控。

减少外部新连接入口,不代表已建立的路径不会收到验证请求。仍然需要认证通信方,并验证收到的请求。

参考:WebSocket协议(RFC 6455)

出站连接也需要认证对方。Relay同时检查连接器身份与配置的目标。

技术补充:通过HMAC认证连接方

WordWarden对短期挑战返回HMAC响应,对包含挑战ID和nonce的字符串签名,并检查目标URL中的租户ID和连接器ID是否与自身配置一致。

三种连接方式都必须使用HMAC。Relay减少的是入站暴露面,并不能省略连接器认证或秘密信息管理。

究竟有哪些信息跨越边界

这一点需要说清楚:并不是“密码不会离开内部网络”。

用户在登录界面输入密码后,密码会经过Authrim。准确的表述是“Authrim与WordWarden不保存密码”,而不是“密码不会离开组织”。

组织内部网络 Authrim(云端) 密码向左传递,途中不保存 LDAP / AD 密码的权威来源 WordWarden Authrim 用户 返回验证结果与允许的属性 保存 密码的权威来源 不保存(WordWarden / Authrim) 密码或密码哈希 包括从旧系统迁入的哈希 Authrim保存会话、资料与通行密钥状态
文档明确规定:Authrim不导入、哈希、重新哈希或持久保存密码凭据,也包括旧系统中的密码哈希。

返回的信息也有限制

验证成功后,Authrim得到结果,以及请求属性中连接器本地允许列表准许的部分。不是请求方决定能取什么,而是目录一侧决定传出什么

因此,仅修改Authrim一侧的配置,无法扩大从内部网络获取的属性范围。

密码是过渡的桥梁

这种连接是为了逐步迁移

LDAP/AD继续作为密码权威来源,用户仍使用原有账户登录,同时逐步注册通行密钥。邮箱验证码作为恢复路径保留,让认证方式转换时登录仍可继续。

文档也明确禁止把LDAP/AD密码哈希导出到Authrim。那样做会把迁移桥梁变成凭据副本。

正在准备公开测试版。首个目标版本是v0.1.0-beta.1

适合试点使用,面向能够在LDAP/AD附近运行小服务,并理解目录、网络、TLS和秘密管理边界的组织。这不是托管目录服务。

需要Authrim 0.3.2或更高版本,并启用Directory Authentication与Relay。当前测试版修改配置后需要重启进程。

复制凭据或开放入站连接,
并非仅有的选择。

在目录附近验证,并由内部建立出站连接,就能在不复制密码哈希、不公开内部入站端点的情况下接入现代登录。

最终希望走向的是通行密钥迁移。目录连接提供了基础,让迁移可以在不打断用户登录的情况下进行。