WCFクライアントプロキシクラスにWindows認証と、すでにログインしているドメインユーザーのWindowsPrincipalを資格情報として使用するようにどのように伝えますか?

StackOverflow https://stackoverflow.com/questions/3166150

質問

WCF Webサービスを呼び出すWPF Windowsクライアントがあります。アプリケーションを開始する前に、ユーザーはすでにWindowsドメインにログインしており、WCFサービスはWindows認証を使用しています。

WCFサービスを呼び出すときに、WPFクライアントに、すでにログインしているユーザーのWindowsPrincipalを使用してもらいたいです。ユーザーに2回(Windowsとアプリで)ログインするように依頼することを依頼するという理由だけで、これを行うための明示的なユーザー名とパスワードを備えた新しいNetworkCredentialインスタンスを作成したくありません。

私が見たサンプルのほとんどは、この方法を使用して資格情報を設定しますが、これは私が望むものではありません

serviceClientProxy.ClientCredentials.Windows.ClientCredential
= new NetworkCredential("username", "password", "domain");

代わりに、私はこのようなことをしたいです

serviceClientProxy.ClientCredentials.Windows.AllowedImpersonationLevel
    = TokenImpersonationLevel.Identification;
serviceClientProxy.ClientCredentials.Windows.ClientCredential
    = { /* network credential for already logged in user */ }

つまり、既存の(そして働いている)ためのネットワーククレデンスが欲しい

new WindowsPrincipal(WindowsIdentity.GetCurrent())

誰かがこれを行う方法を知っていますか?設定を試みました security mode = "" と輸送 clientCredentialType = "" app.configで、しかしこれまでのところ役に立ちません。

役に立ちましたか?

解決

2つのこと。 WCFサービスがWindows資格情報を許可するように設定されていることを確認してください。 Windows資格情報のタイプを使用するようにクライアントを構成できるはずであることを確認したら。例(MSDNから)を以下に示します。

WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

他のヒント

あなたのapp.configで:

  • 追加:

    <system.net>
      <defaultProxy useDefaultCredentials="true"></defaultProxy>
    </system.net>
    
  • 要素バインディング/セキュリティ/トランスポートのバインディングでは、roxycredentialType = "ntlm"を設定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top