我们有一个用户访问Web服务器的系统,然后Web服务器调用WCF服务。
我们希望在Web服务器上的应用程序池的Windows标识的安全上下文中调用WCF服务。
最好的方法是什么?它可以完全通过web.config文件中的配置来完成。
由于
西拉
答案 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,否则将显示谁呼叫您。
马克