Windows認証を使用して一部のWebサービスに対して認証を試みるasp.net mvc 4.0 Webアプリケーションがあります。iis7でホストされています
Web サービスは autodesk Vault 2011 Web サービスです。Vault ユーザー アカウントを使用するか、Windows ログインを使用できるログイン画面をユーザーに提示します。Vault Web サービスを介してログインし、Vault からデータをプルするなど、さまざまな Vault Web サービスを呼び出す Vault アカウントを使用しても問題はありません。ここに問題はありません
Windows 認証を使用してログインしようとすると、Web サービスにアクセスすると 401 エラーが発生します。
これはダブル ホップの問題である可能性があるため、サーバー管理者は Kerberos を有効にして、少なくとも可能性としてこれを排除できるようにします。ライブ環境では、サイトと Web サービスは異なるサーバー上にあります。
ただし、テスト用に仮想マシンのセットアップがあり、サイトと Web サービスは同じマシン上にありますが、それでも 401 問題が発生するため、最初に考えられていたダブル ホップの問題ではなく、iis 構成の問題である可能性があります。
次のことを試しましたが、成功しませんでした
次のコードを winauthservice に追加しました (呼び出しをオーバーライドできるように Web サービスをラップし、サービスをインスタンス化するファクトリ クラスを作成しました)。
this.UnsafeAuthenticatedConnectionSharing = true;
var credentialCache = new CredentialCache();
credentialCache.Add(new Uri(this.Url), "NTLM", new NetworkCredential(identity.Name, identity.Password.ConvertToUNSecureString(), identity.Name.Substring(0, identity.Name.IndexOf("\\", StringComparison.OrdinalIgnoreCase))));
this.Credentials = credentialCache;
NTLMの代わりにNegotiateでも試しました
レジストリでループバック チェックを無効にし、サーバー名とローカルホストを BackConnectionHostNames レジストリ エントリに追加しました。
IIS で Web サイトの匿名認証を無効にし、Windows 認証を有効にしました。Windows認証のプロバイダーで、ネゴシエートを削除し、これを行うことを推奨する投稿を見たので、NTLMを残しました。
web.config で認証を設定しましたmode = windows
私のIISログには次のものがあります
2013-09-25 09:11:05 fe80::9565:6102:fe2d:8f41%10 POST /AutodeskDM/Services/WinAuth/WinAuthService.asmx - 80 - fe80::9565:6102:fe2d:8f41%10 Mozilla/ 4.0+(互換;+MSIE+6.0;+MS+Web+サービス+クライアント+プロトコル+4.0.30319.296) 401 2 5 11572 2013-09-25 09:11:05 fe80::9565:6102:fe2d:8f41% 10 POST /AutodeskDM/Services/WinAuth/WinAuthService.asmx - 80 - fe80::9565:6102:fe2d:8f41%10 Mozilla/4.0+(互換;+MSIE+6.0;+MS+Web+サービス+クライアント+プロトコル+ 4.0.30319.296) 401 1 3221225581 10
問題が何であるかについてのアイデアが不足していますが、私の考えでは、テスト VM でこれを機能させることができれば、ライブ環境でもっとうまくいくかもしれません。