我想将使用ASP.NET MVC应用程序的用户的Windows凭据传递给WCF服务。我只想通过配置来实现这一点,以便在代码中透明地实现
(正如修订版中所示,这个问题最初被问得太具体了。我只是用一种更好的方式重新问了一遍,以回答我自己的问题,希望它能帮助到别人。事实证明,这是一项非常简单的任务)
在web.config(客户端和服务器)中,在<system.serviceModel>
部分添加/修改绑定,使其看起来像这样:
<basicHttpBinding>
<binding name="MyBasicBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
并且,将其添加到客户端web.config <system.web>
部分:
<identity impersonate="true" />
<authentication mode="Windows" />
这两项更改将使最终用户成为web请求的当前用户,然后将在WCF消息中发送该请求。
然后可以在服务器端检索用户,如下所示:
ServiceSecurityContext.Current.WindowsIdentity