2016-10-27 11 views
0

クライアントプロキシ経由でWebサービスを使用するC#アプリケーションがあります。 Webサービスは、Windows認証(Active Directory経由のHTTP 401挑戦)を使用するように設定されています。私のユーザーアカウントは、Webサービスへのアクセスを許可されるように設定されています。C#WebサービスプロキシWindows認証

ブラウザからwebserviceを呼び出すと、うまくいきました。ブラウザは401の挑戦をすることができ、ユーザーIDパスワードを要求しません(内部的にサーバーとクライアントはADコントローラを介して行います)。

問題は、C#アプリケーションを使用してサービスを使用しようとすると、HTTP要求の不正なエラーがスローされることです。

Windows認証を行うために、以下のすべてのオプションをWebサービスプロキシに試しました。

ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation 
ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultCredentials as System.Net.NetworkCredential 
ClientCredentials.Windows.AllowedImpersonationLevel =System.Security.Principal.TokenImpersonationLevel.Impersonation 

誰かがブラウザの仕組みと同じようにWebサービス呼び出しを行う方法についてお手伝いしてください。サービスを呼び出す際にユーザーIDとパスワードを渡すことができません。

答えて

0

私は自分自身で解決策を見つけました。サービスコールはHTTPWebRequestでCredentials = CredentialCache.DefaultCredentialsでうまく動作します(HTTP 401挑戦)。ブラウザは同じアプローチを使用しているようです。問題はこの401の挑戦をすることができないクライアントプロキシを作成することです。

理由を特定できませんでしたが、サービスがクライアントプロキシとの適切なハンドシェイクを確立するのに十分なメタ情報を持っていない可能性があります。

関連する問題