在WCF中模拟客户端身份,使用/netTcpBinding

在WCF中模拟客户端身份,使用/netTcpBinding,wcf,wcf-binding,wcf-security,Wcf,Wcf Binding,Wcf Security,通过配置调用netTcp端点操作时,是否可以模拟客户端的身份?WCF配置客户端中有一个部分,如下所示: <client> <endpoint address="net.tcp://localhost:8081/tcpExample" binding="netTcpBinding" bindingConfiguration="myTcpBinding" contract="TestTcp.IHelloT

通过配置调用netTcp端点操作时,是否可以模拟客户端的身份?WCF配置客户端中有一个部分,如下所示:

<client>
    <endpoint 
        address="net.tcp://localhost:8081/tcpExample" 
        binding="netTcpBinding"
        bindingConfiguration="myTcpBinding" 
        contract="TestTcp.IHelloTcp"
        name="NetTcpBinding_IHelloTcp">
        <identity>
            <userPrincipalName value="leethax@mydomain.inc" />
        </identity>
    </endpoint>
</client>


我的客户端没有失败,似乎连接到客户端的身份是当前登录的用户,即我

嗯。。。我不太明白。netTcpBinding的默认行为是使用Windows凭据-例如,您当前的Windows帐户用于服务凭据

这是开箱即用的默认设置

如果您想模拟某些其他用户,则不能在配置中执行此操作-必须在代码中执行此操作。那是唯一的办法,对不起

MyServiceClient client = new MyServiceClient();
client.ClientCredentials.Windows.ClientCredential.Domain = domain;
client.ClientCredentials.Windows.ClientCredential.UserName = username;
client.ClientCredentials.Windows.ClientCredential.Password = password;

在配置中指定其他用户的唯一方法是使用定义要使用的另一个用户帐户的证书。您不能在配置文件中配置直接的Windows用户帐户及其密码。

HMm。。。我不太明白。netTcpBinding的默认行为是使用Windows凭据-例如,您当前的Windows帐户用于服务凭据

这是开箱即用的默认设置

如果您想模拟某些其他用户,则不能在配置中执行此操作-必须在代码中执行此操作。那是唯一的办法,对不起

MyServiceClient client = new MyServiceClient();
client.ClientCredentials.Windows.ClientCredential.Domain = domain;
client.ClientCredentials.Windows.ClientCredential.UserName = username;
client.ClientCredentials.Windows.ClientCredential.Password = password;

在配置中指定其他用户的唯一方法是使用定义要使用的另一个用户帐户的证书。您不能在配置文件中配置直接的Windows用户帐户及其密码。

您确实有三个选项:

  • 人工模拟 (WindowsIdentity.Impersonate)
  • 声明性模仿 (OperationBehavior(模拟=模拟。必需))
  • 完全模仿 (ServiceAuthorizationBehavior.ImpersonateCallerForAllOperations)

  • 此外,请确保运行服务的帐户(即。leethax@mydomain.inc)在计算机和域级别都被授予适当的权限。

    您确实有三个选项:

  • 人工模拟 (WindowsIdentity.Impersonate)
  • 声明性模仿 (OperationBehavior(模拟=模拟。必需))
  • 完全模仿 (ServiceAuthorizationBehavior.ImpersonateCallerForAllOperations)

  • 此外,请确保运行服务的帐户(即。leethax@mydomain.inc)在计算机和域级别都被授予了适当的权限。

    您调用的服务器是否与承载wcf服务的服务器不同?如果是这样的话,您可能正在体验委派的乐趣。您是否正在调用与承载wcf服务的服务器不同的服务器?如果是这样,你可能正在体验授权的乐趣。