1

構成を介して 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>

私のクライアントは失敗しません。クライアントに添付された ID は、現在ログインしているユーザー (つまり私) のようです。

4

2 に答える 2

3

実際には3つのオプションがあります。

  1. 手動による偽装(WindowsIdentity.Impersonate)
  2. 宣言型のなりすまし(OperationBehavior(Impersonation = Impersonation.Required))
  3. 完全な偽装(ServiceAuthorizationBehavior.ImpersonateCallerForAllOperations)

また、サービスを実行しているアカウント(つまり、leethax @ mydomain.inc)に、マシンレベルとドメインレベルの両方で適切なアクセス許可が付与されていることを確認してください。

于 2009-06-10T19:11:55.347 に答える
1

うーん...フォローしているかどうかわかりません。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;

config で別のユーザーを指定する唯一の方法は、使用する別のユーザー アカウントを定義する証明書を使用することです。構成ファイルで、Windows ユーザー アカウントとそのパスワードを構成することはできません。

于 2009-06-10T14:39:14.757 に答える