
顧客は、Linux ベースの Web/アプリケーション サーバー用に Windows ドメインで SSO を必要としています。サーバーには独自のキータブがインストールされており、すべて正常に動作します。Windows ドメイン (EXAMPLE.ORG) には、SPN HTTP/server.example.org が関連付けられたサービス ユーザー アカウントがあります。アプリケーション サーバー (WildFly) では、Kerberos 認証が必要で、NTLM 認証は拒否されます。
デフォルト設定で作成されたテスト ドメイン (2016 ベース) があります。テスト ドメインでこの設定を繰り返そうとしていますが、Kerberos を機能させることができません。サーバーからのネゴシエーション要求は表示されますが、クライアントは常に NTLM チケットを返します。
WWW-Authenticate: Negotiate (request)
Authorization: Negotiate TlRMTVNTU..... (reply)
顧客インフラストラクチャでは、Kerberosチケットで同じことが起こります
WWW-Authenticate: Negotiate (request)
Authorization: Negotiate YIIHmAYGKw.... (reply)
私が見つけた唯一の違い (GPO 以外) は、SPN が同じ DNS ドメイン内にないことです。私の AD ドメインは tdm.sample.org で、サーバーは server.sample.org ですが、それが重要かどうかはわかりません。
しばらく前に、ドメイン内でも同じ問題が発生しました。IE クライアントと、同じドメインに参加している IIS を備えた Windows Server 2016 の両方が NTLM を使用していました。
クライアントが承認するかどうかを制御する GPO 設定はほとんどないと思いますが、私が読んだドキュメントはどれも役に立ちませんでした。
Kerberos クライアント認証にどのような制限があるか、または適用できるヒントやデバッグ戦略について明確な説明はありますか?
答え1
Windows が Kerberos 認証を試行しない場合は、いくつかの制限があります。
1. SPN は Web エイリアスではなく PTR を指します
ドメイン メンバーではない Web サーバーにエイリアスがある場合は、そのエイリアスに SPN を割り当てる必要はありません。そのサーバーの実際の DNS レコードに対してチェックされます。
次のような状況があるとします。
A record server.example.org -> 10.0.0.1
PTR record 10.0.0.1 -> server.example.org
CNAME record webapp.example.org -> server.example.org
アクセスウェブアプリケーションSPNは必要ありませんHTTP/webapp.example.org、割り当てる必要がありますHTTP/server.example.orgサービス レコードのみ。PTR レコードもない場合は、IP アドレスである必要があると思います。
2. ドメイン メンバーを他の名前で呼ばないでください。
IIS と Windows 統合認証が有効になっているドメイン メンバー サーバーがあります。ネットワーク設定により、非ドメイン ネットワークとドメイン ネットワークの両方で DNS 設定が行われます。
srv.example.org -> 10.0.0.1
10.0.0.1 -> srv.example.org
また、ドメインにも登録されています:
srv.tdm.example.org -> 10.0.0.1
このサーバーは、srv.example.org としてアクセスされる場合は Kerberos を許可しません。Kerberos は、srv.tdm.example.org としてアクセスされた場合にのみ機能します。IP アドレス経由でアクセスされた場合も機能しません。
この事実の性質は、通常は DNS の前に行われるドメイン内の Windows 名前解決によって発生したものだと思います。
引き続き調査し、この回答を更新します。