2011-09-13 8 views
1

クラスタ化された環境でホストされているWebサービスがあります。このサービスを呼び出すWebアプリケーションも、クラスター化された環境でホストされますが、IIS6サーバーの別のセットにホストされます。したがって、アプリケーションサーバーはappserv1とappserv2で、サービスサーバーはsvcserv1とsvcserv2です。私たちは通常、アクセスするサーバをappservまたはsvcservのいずれかとみなすため、アクセスするサーバを制御しません。
サービスはWCFサービスですが、.Net 2.0 Webサービスフレームワークと互換性があるように作成されています。アプリケーションは正常に動作しますが、おそらくサービスが応答する時間の35%以上がで例外的に実行されます。例外:要求がHTTPステータス401:Unauthorizedで失敗しました。エラー。サーバからの断続的な「401:Unauthorized」例外

資格情報を直接設定することをお勧めしている人もいますが、私のアプリケーションではこれを次のようにしています。

Dim cc As New CredentialCache() 
Dim service As WCFServiceRef.Reports 

service = New WCFServiceRef.Reports 

service.Url = serviceURL 
cc.Add(New Uri(service.Url), "Negotiate", New NetworkCredential("username", "password")) 
service.Credentials = cc 

reportData = service.GenerateReport(reportid, True, parameters, "PDF", Environment) 

私はまた、直接ロードマネージャをバイパスし、サーバのドメイン名に直接移動するための基準URLを変更することで、個々のサーバーにアクセスしようとしたが、これは何の違いも行っていません。

私も見たことがありますthis MSDN KBの記事ですが、私は直接サーバー構成にアクセスできないため(何か変更するのは難しいです)、アプリケーションから何かできないことを確認したかったのです側。サーバーはWindows認証用に構成されており、匿名アクセスは許可されません。

ありがとうございます!

答えて

2

多くのことは、認証の試行がKerberosを使用しているか、NTLMに戻っているかによって異なります。私は、Fiddlerのようなツールを使って、どの認証プロトコルが使用されているかを検証するためにアプリケーションサーバーから送信されるパケットをキャプチャすることをお勧めします。

あなたはKerberosを使用している見つけた場合は、ここにしようとするいくつかのことだ:

  1. は、認証を再試行し、内の任意のKerberosエラーをチェックし、その後、あなたの管理者は、両方のサーバー上のKerberosエラーログを有効するには、Getイベントログ。 http://support.microsoft.com/kb/262177を参照してください。
  2. サービスに登録されているSPNを確認する - サービスのFQDNがmyservice.prd.adであれば2つのSPNが必要です。IIS6アプリケーションプールがサービスとして実行されていない場合は、サービスをホストしているサーバーに登録する必要がありますアカウント、およびそれ以外のサービスアカウントに登録する必要があります。
    • HTTP/MYSERVICE.PRD.AD
    • HTTP/MYSERVICE
  3. また、あなたのサービスに登録されたすべてのDNSエントリが(ホスト名)であることを確認CNAME(エイリアス)レコードではなくレコードです。私は、XP/2003マシンがCNAMEレコードがDNS用に使用されたとき(Windows 7/2008マシンではない)、間違ったSPNのKerberosチケットを取得しようとした環境で、いくつかの問題に遭遇しました。
  4. DelegConfigをサービスサーバーにインストールすることもできます。これは、Kerberos認証で最もよくある問題を整理する際に非常に優れています。http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1887

願わくば助けてください。 NTLMを使用している場合、残念ながら私はKerberos専用環境での作業に慣れているので、多くのアイデアはありません。考慮すべき

+0

ありがとうございました。あなたは私に多くの調査をしました。研究に時間を費やし、調査結果をフォローアップします。 .configファイルでこれらの値を設定していないので、私は現在SPN登録を検討中です。 – McArthey

+0

偽装を使用してサービスを実行している場合、上記の#2に関連してサービスが実行されているアカウントに影響しますか(SPN/UPNの設定用)? – McArthey

+1

あなたの質問の一部をもう一度読んだところ、サービスサーバーがクラスタ内で実行されている、つまり負荷分散されていると言われたことに気付きました。その場合、SPNをサービスアカウントに登録し、IIS6アプリケーションプールをサービスアカウント。私は偽装がこれにどのように影響するかは100%確信していませんが、他の方法は見られません(負荷分散/クラスタ環境の場合、SPNをマシンアカウントに登録すると、IISは、要求が実際にどのマシンに送られているのかを知ることができないため、Kerberosチケットが必要です)。 –

1

まず、各マシンのIISログをチェックして、401エラーが1台のマシンから来ているかどうかを確認します。

次に確認するのは、401が特定のURLに関連しているかどうかです。

0

もう一つ:

はスティッキーセッションを使用する必要がありますか? リサイクルが頻繁に行われるサーバーはありますか?

なぜあなたは401を手に入れているのだろうかという理由がたくさんあるので、掘り起こして何が起こっているのかを調べるだけでいいです。

関連する問題