【发布时间】:2010-12-13 09:31:44
【问题描述】:
我们有一个系统,用户访问 Web 服务器,然后 Web 服务器调用 WCF 服务。
我们希望在 Web 服务器上应用程序池的 windows 标识的安全上下文中调用 WCF 服务。
最好的方法是什么?能不能纯粹通过web.config文件中的配置来完成。
谢谢
设拉子
【问题讨论】:
标签: wcf security configuration windows-authentication
我们有一个系统,用户访问 Web 服务器,然后 Web 服务器调用 WCF 服务。
我们希望在 Web 服务器上应用程序池的 windows 标识的安全上下文中调用 WCF 服务。
最好的方法是什么?能不能纯粹通过web.config文件中的配置来完成。
谢谢
设拉子
【问题讨论】:
标签: wcf security configuration windows-authentication
是的,你应该可以做到这一点,一切都在配置中:
<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,否则它将显示谁给你打电话。
马克
【讨论】: