Windows クライアントと JBoss を使用して SSO を実装しようとしています。私の開発用 PC を所有しています。JBoss は Windows 7 で実行され、開発サーバーでは (Red Hat) Linux で実行されます。
Negiation ヘッダーが正しく到着しているかどうかを確認できるJBoss Negotiation Toolkitがあります。
BasicNegotiation
を使用して自分の PC で JBoss を実行している限り、テストは正常に機能しますlocalhost
。送信されたヘッダーは
Authorization: Negotiate YHgGBisGAQUFAqBuMGygMDAuBgorBgEEAYI3AgIKB...
(さらにいくつかのバイト)
テストの応答は、
Negotiation Toolkit Basic Negotiation WWW-Authenticate - Negotiate YHgGBisGAQUFAqBuMGygMDAuBgorBgEEAYI3AgIK...
NegTokenInit Message Oid - SPNEGO Mech Types - {NTLM} {Kerberos V5 Legacy} {Kerberos V5} {1.3.6.1.4.1.311.2.2.30} Req Flags - Mech Token -TlRMTVNTUAABAAAAl7II4gQABAAyAAAACgAKACgAAAAGAbAdAAAAD0lQSUVWMTAwMjVJUElF Mech List Mic -
しかし、Linux サーバーでは、同じテストは機能しません。基本的な理由 (推測) は、ヘッダーが異なって見えることです。
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbAdAAAADw==
そして、JBoss Negotiation Toolkit は NTML 認証にフォールバックしますが、これは望ましくなく、webapp の出力にエラーとして表示されます。
ネゴシエーション ツールキット NTLM ネゴシエーション WWW-認証 - ネゴシエート TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbAdAAAADw==
NTLM - Negotiate_Message 警告、これは NTLM です。SPNEGO のみがサポートされています! ネゴシエート フラグ - (encryption56Bit)(explicitKeyExchange)(sessionKeyExchange128Bit)negoteVersion)(ntlm2)(alwaysSign)(ntlm)(lmKey)(sign)(requestTarget)(oem)(unicode) ドメイン名 = null - {length=0}{maxLength =0}{offset=0} ワークステーション名 = null - {length=0}{maxLength=0}{offset=0} バージョン - ?
Negotiation ヘッダーを送信するように Internet Explorer と Firefox の両方を構成しましたが、どちらも Linux サーバーで失敗します。
私は何を間違っていますか?
ところで、Windows は常にローカル マシンで Kerberos ネゴシエーション ヘッダーを送信するとどこかで読みましたが、本当ですか?