WCF Windows 身份验证中的 Active Directory 使用
Active Directory usage in WCF Windows authentication
我们有一个使用 Windows 身份验证的 WCF 服务(也有选项 AllowNtlm=true
)。文档说 Windows 身份验证使用 Active Directory 对用户进行身份验证,但没有描述如何,我需要弄清楚。 WCF 如何使用 Active Directory?
这是我们使用的绑定配置:
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="Windows" establishSecurityContext="false" />
</security>
如果有人感兴趣,这就是我找到的。
如果您将客户端凭据类型设置为 Windows,WCF 使用名为 Windows SSPI 的东西进行 Windows 身份验证。
Windows SSPI 向域控制器发出 Kerberos 或 CLDAP 请求。示例:
Kerberos:AS-REQ
请求
CLDAP:
searchRequest(..) "<ROOT>"
(&(&(&(&(&(&(DnsDomain=...)(Host=...))(User=...))(AAC=...))(DomainGuid=...))(NtVer=...))(DnsHostName=...))
两者都可以使用 Wireshark 观察(寻找 Kerberos5 或 CLDAP 协议请求)
我们有一个使用 Windows 身份验证的 WCF 服务(也有选项 AllowNtlm=true
)。文档说 Windows 身份验证使用 Active Directory 对用户进行身份验证,但没有描述如何,我需要弄清楚。 WCF 如何使用 Active Directory?
这是我们使用的绑定配置:
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="Windows" establishSecurityContext="false" />
</security>
如果有人感兴趣,这就是我找到的。
如果您将客户端凭据类型设置为 Windows,WCF 使用名为 Windows SSPI 的东西进行 Windows 身份验证。
Windows SSPI 向域控制器发出 Kerberos 或 CLDAP 请求。示例:
Kerberos:AS-REQ
请求
CLDAP:
searchRequest(..) "<ROOT>"
(&(&(&(&(&(&(DnsDomain=...)(Host=...))(User=...))(AAC=...))(DomainGuid=...))(NtVer=...))(DnsHostName=...))
两者都可以使用 Wireshark 观察(寻找 Kerberos5 或 CLDAP 协议请求)