有没有办法从WCF方法检索请求的Windows用户名

时间:2012-09-04 14:20:09

标签: wcf wcf-security

我在我的WCF服务和代理中使用自定义绑定。我通过继承DuplexClientbase来创建代理。 WCF中有一个选项可以帮助我获取调用该方法的用户名吗?

这是我的约束力

<bindings>
    <customBinding>
        <binding name="CustomPipeBinding" maxConnections="10" openTimeout="01:20:00" receiveTimeout="20.00:00:00" sendTimeout="01:20:00" closeTimeout="01:20:00">
            <windowsStreamSecurity protectionLevel="None" />
            <namedPipeTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
        </binding>
        <binding name="CustomTcpBinding" maxConnections="10" openTimeout="01:20:00" receiveTimeout="20.00:00:00" sendTimeout="00:05:00" closeTimeout="01:20:00">
            <windowsStreamSecurity protectionLevel="None" />
            <reliableSession />
            <tcpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
        </binding>
    </customBinding>
</bindings>

1 个答案:

答案 0 :(得分:0)

您需要将服务配置为要求模拟为outlined in this MSDN article.由于您要定义自定义绑定,因此您需要添加所需的安全元素配置以允许WCF将Windows凭据从客户端传递到服务。

在您的服务代码中,您需要访问ServiceSecurityContext.Current.WindowsIdentity静态属性才能获得所需内容。