使用Windows身份验证调用WCF

时间:2009-11-05 11:47:50

标签: wcf security configuration windows-authentication

我们有一个用户访问Web服务器的系统,然后Web服务器调用WCF服务。

我们希望在Web服务器上的应用程序池的Windows标识的安全上下文中调用WCF服务。

最好的方法是什么?它可以完全通过web.config文件中的配置来完成。

由于

西拉

1 个答案:

答案 0 :(得分:5)

是的,您应该可以在config中执行此操作:

<system.serviceModel>
  <bindings>
     <netTcpBinding>
        <binding name="WinAuth" mode="Transport">
           <transport clientCredentialType="Windows" />  
        <bindings>
     </netTcpBinding>
  </bindings>
</system.serviceModel>

当然,根据您的绑定,您必须在<bindings>父节点下使用不同的标记 - 当然,并非所有绑定都支持所有安全模式......

在您的端点中,使用适当的绑定,然后只引用此配置:

<endpoint name="WCFService" address="......." 
          binding="netTcpBinding"
          bindingConfiguration="WinAuth"
          contract="......" />

应该这样做!当然,如果您需要消息安全性而不是传输安全性,那么您也可以这样做。

在您的WCF服务方法中,您可以通过检查来检查Windows凭据是否已被发送,以及它们是什么,

ServiceSecurityContext.Current.WindowsIdentity

如果您没有Windows呼叫者,则此值为NULL,否则将显示谁呼叫您。

马克