0

IIS 7 /Windows2008でホストされているASP.NETMVC3WebアプリケーションがIIS/Windows2008でホストされている別のサーバーからWCFWebサービスにアクセスしているシナリオがあります。2つのサーバー間にKCDがセットアップされており、必要なものがあります。 SPNもセットアップされます。

これがIEで機能することを確認しました。NetMonを使用して、KCDがバックエンドで機能していることも確認しました。私のWebアプリはマシンアカウント(ネットワークサービス)で実行されており、SPNはこのマシンアカウントに応じて設定されています。問題は、WindowsとMac OS X(Lion)マシンの両方でSafariを使用すると、401Unauthorizedエラーが発生することです。

HTTPリクエストは、クライアント認証スキーム「ネゴシエート」では許可されていません。サーバーから受信した認証ヘッダーは「Negotiate、NTLM」でした。

NetMonを見ると、WCF Webサービスへの要求がNTLMにフォールバックしているため、失敗しています。

WindowsマシンとMacマシンの両方がドメインの一部であり、両方のマシンで同じWindowsクレデンシャルを使用していることに注意してください。

SafariがKerberos認証をサポートしていることは知っていますが、WebアプリからWCFサービスに委任するときに問題があるようです。それはSafariの問題ですか、それともWCFの問題ですか?

前もって感謝します!

アップデート:

MacのSafariで、最初にWebアプリケーションにアクセスすると、WiresharkとNetMonで、HTTP要求に沿って有効なKerberosトークンが渡されていることがわかります(401 Unauthorizedエラーは発生しません)。しかし、私のWebアプリケーションがバックエンドWebサービスにアクセスしようとすると、その特定のHTTP要求で、渡されるトークンがNTLMトークンになっていることがわかります。

セキュリティモードとしてTransportCredentialOnlyでbasicHttpBindingを使用しています-web.configで、バックエンドWebサービスのエンドポイントのSPN ID(バックエンドWebサービスサーバーのHTTP / FQDN)も指定しました。もちろん、Windows Authは、「カーネルモードの使用」がオンになっていて、両方のサイトのappHost.configでuseAppPoolCredentialsがtrueに設定されている両方のIISサイトで有効になっています。繰り返しますが、これはMac上のSafari専用であり、FirefoxとChromeはどちらも正常に動作しています。

4

2 に答える 2

1
  1. Safari が委任可能/転送可能なチケットを送信するかどうかを Wireshark で確認します。
  2. バックエンド サービスに直接アクセスできますか? 資格情報の委任がオンになっています。チケットは委任できないと思いますか? Safari はこれを要求する必要があります。Firefox と IE はそうです。渡される NTLM トークンは、サーバーからのトークンです。NTLM には委任サポートはありません。ターゲット ホストに問題があります。
于 2012-09-28T13:28:24.477 に答える
1

Wireshark のトレースを見ると、転送できない Kerberos チケットを Safari が要求しているようです。このフラグが原因で、Kerberos チケットがネクスト ホップに転送/委任されないため、認証が NTLM にフォールバックして失敗します。

これを IE、Firefox、および Chrome によって要求された TGS 要求と比較すると、すべて転送可能フラグが設定されています。

また、転送可能なチケットを取得するために Mac OS X で klist -F を実行しようとしましたが、Safari は転送可能なフラグを持たない別のチケットを要求します。

これにより、Mac の Safari は委任をサポートしていないという結論に達しました。

于 2012-09-28T03:02:26.520 に答える