IIS Windows 2016 NanoサーバーでホストされているWebサービスを実行しています。http://servername/service/health
を実行すると、サービスに問題なくアクセスできます
ただし、http://[IP Address here]/service/health
またはhttp://service.company.com/service/health
を介してアクセスした場合、ADログイン資格情報の入力を求められます。
DNSレコードとIIS ApplicationHost.configを調べましたが、実際には何が問題であるのかわかりません。設定を1つまたは2つ見落としている可能性があります。何をすべきか?
これはKerberosの問題のようです。私が正しい場合は、サーバーのADコンピューターアカウント(*)にHTTP/SERVERNAME
の登録済みSPN(これはSETSPN
コマンドラインツールで確認できます)があるため、自動Kerberos認証が発生する可能性がありますコンピューターの名前を使用してWebサービスが呼び出されたとき。ただし、他の名前でWebサービスを呼び出すと、これは機能しません。
別の名前を使用してWebサービスを呼び出すことができるようにする場合は、SETSPN -S HTTP/service.company.com SERVERNAME
などのコマンドを使用して、同じADコンピューターアカウント(*)に別のSPNを追加する必要があります。
詳細 ここ 。
(*)または、手動で構成した場合は、IISのアプリケーションプールを実行するユーザーアカウント。
Service.company.comは、IISサーバー上の登録済みサービスプリンシパル名である必要があります。
また、デフォルトでKerberos統合認証は、システムがそのように構成されておらず、IPアドレスが登録済みのサービスプリンシパル名である場合を除き、IPアドレスでは機能しません。
https://docs.Microsoft.com/en-us/windows-server/security/kerberos/configuring-kerberos-over-ip
もう1つのチェック-ブラウザーが資格情報を渡しておらず、ログインプロンプトを強制している可能性があります。
インターネットオプションには、ローカルイントラネット用のセキュリティゾーンがあります。このゾーンは、ADダイアログを必要とせずに、Windows資格情報を自動的に渡します。既定の設定では、サーバー名がネットワークの一部として検出されますが、完全なドメイン名はおそらくインターネットゾーンと見なされ、資格情報を送信しません。ローカルイントラネットの構成ページで、FQDNを追加してプロンプトを表示しないようにする(またはグループポリシーを介して設定する)ことができます。
これはすべて、サイトをWindows資格情報で実行することを意図しており、内部で実行していることを前提としています。私はセキュリティの専門家ではありませんが、個人的には、資格情報をインターネット上のサイトに自動的に送信したくありません。