1

我正在使用带有证书身份验证的消息安全性

        <basicHttpBinding>
            <binding name ="customBinding">
                <security mode="Message">
                    <message clientCredentialType="Certificate"/>
                </security>
            </binding>
        </basicHttpBinding>

我正在尝试记录客户端用户名,当我这样做时:

ServiceSecurityContext.Current.WindowsIdentity.Name

我得到空值。如何在使用此安全模式时检索客户端的用户名?

4

2 回答 2

0
 <basicHttpBinding>
        <binding name="BasicHttpEndpointBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>

ServiceSecurityContext 类使用 windows 身份验证

于 2013-03-18T07:42:48.937 回答
0

我没有什么要测试的,但是您可以尝试将传输窗口与消息证书混合。我真的不确定,如果这是可能的。

<basicHttpBinding>
  <binding name ="customBinding">
     <security mode="Message">  
             <message clientCredentialType="Certificate" />  
             <transport clientCredentialType="Windows"/>
      </security>    
   </binding>
</basicHttpBinding>

并为您的web.config

<system.web><authentication mode="Windows"/></system.web>

供参考:message-Windows https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security-with-a-windows-client

消息证书https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security-with-a-certificate-client

我将客户端的用户名与带有传输安全性(ssl)的basicHttpBinding绑定:

<security mode="Transport">
     <transport clientCredentialType="Windows"/>
</security>

并且没有 ssl:

<security mode="TransportCredentialOnly">
     <transport clientCredentialType="Windows"/>
</security> 

确保IIS配置了 Authentication - WindowsAuthentication Enabled

希望这对正在处理这个问题的人有所帮助。

于 2018-12-05T10:02:23.840 回答