配置Windows身份验证的WCF场景下RODC转发至RWDC问题咨询
问题根因说明
RODC默认仅缓存明确加入密码复制允许列表的账户凭据,默认配置下WCF服务对应的服务账户、客户端用户账户未加入RODC缓存列表时,所有Kerberos票据请求都会被转发到远端RWDC处理,是出现延迟、超时的核心原因。
可行解决方案
1. 配置RODC密码复制策略并预加载凭据
- 打开「Active Directory用户和计算机」,找到对应RODC的计算机账户,进入「密码复制策略」选项卡
- 将WCF服务运行所用的服务账户、所有异地站点需要访问该服务的用户账户,添加到允许该RODC复制密码的账户列表中
- 执行预加载命令将对应账户凭据同步到RODC本地:
repadmin /rodcpwdrepl [RODC计算机名] [域名] [用户账户1] [服务账户]
- 验证缓存是否生效:
repadmin /prp view [RODC计算机名] reveal
确认目标账户已出现在返回列表中即可。
2. 优化WCF绑定配置减少Kerberos请求频率
调整Net.Tcp绑定的消息安全配置,开启安全会话复用身份验证结果,避免每次调用都重新请求Kerberos票据:
服务端配置示例
<bindings> <netTcpBinding> <binding name="TcpWindowsBinding"> <security mode="Message"> <message clientCredentialType="Windows" establishSecurityContext="true" negotiateServiceCredential="true"/> </security> </binding> </netTcpBinding> </bindings>
客户端配置示例
<bindings> <netTcpBinding> <binding name="TcpWindowsBinding"> <security mode="Message"> <message clientCredentialType="Windows" establishSecurityContext="true" negotiateServiceCredential="true"/> </security> </binding> </netTcpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="ClientBehavior"> <clientCredentials> <windows allowedImpersonationLevel="Identification" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>
注:如果你的业务场景需要更高的模拟级别,可将allowedImpersonationLevel调整为Impersonation,不建议设置为Delegation,会增加RODC转发请求的概率。
3. 验证SPN注册与AD站点配置
- 确保WCF服务的SPN已正确注册到服务账户下,格式为:
host/[服务域名] [服务账户名]或net.tcp/[服务域名] [服务账户名] - 确认异地站点的所有客户端子网已正确关联到部署RODC的AD站点,避免客户端跨站点请求域控
4. 延长Kerberos票据有效期
通过组策略调整异地站点用户的Kerberos票据有效期,默认用户票据有效期为10小时,可根据业务场景适当延长,减少票据请求次数。
内容的提问来源于stack exchange,提问作者Roland Gelbmann
相关产品推荐
相关产品推荐

