我正在使用带证书身份验证的邮件安全性
<basicHttpBinding>
<binding name ="customBinding">
<security mode="Message">
<message clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
我正在尝试记录客户端用户名,当我这样做时:
ServiceSecurityContext.Current.WindowsIdentity.Name
我得到了空。如何在使用此安全模式时检索客户端的用户名?
答案 0 :(得分:0)
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
ServiceSecurityContext类使用Windows身份验证
答案 1 :(得分:0)
我没有什么可以测试的,但是您可以尝试将transport-Window与message-Certificat混合使用。我真的不确定,如果可能的话。
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
以及您的 web.config :
<basicHttpBinding>
<binding name ="customBinding">
<security mode="Message">
<message clientCredentialType="Certificate" />
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
供参考: 消息Windows https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security-with-a-windows-client
我通过带有Transport-Security(ssl)的basicHttpBinding绑定了客户端的用户名:
<system.web><authentication mode="Windows"/></system.web>
且没有ssl:
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
请确保 IIS 配置了身份验证-已启用Windows身份验证。
希望这可以帮助正在处理此问题的人。