0

私はしばらくの間、物事を正面から見てこの問題を解決するのに苦労していますが、運がありません. Kerberos を使用して AD を介して Java アプリケーション ユーザーを認証しようとしています。以下のように KDC を作成しました。

[libdefaults]
default_realm = X.LOCAL
default_tkt_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
default_tgs_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
permitted_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 

[realms]
X.LOCAL = {
kdc = machine_name.X.LOCAL 
default_domain = X.LOCAL 
}

[domain_realm]
.X.LOCAL = X.LOCAL

新しいレルムを次のように定義しました。 • グローバル セキュリティ > JAAS – アプリケーション ログイン • 「client」という名前の新しいログインを作成し、com.ibm.ws.security.auth.kerberos.Krb5LoginModuleWrapperClient リソースを割り当てました。

コード レベルでは、KDC のパスを設定しています。System.setProperty(java.security.krb5.conf, “KDC” path);

ログインしようとしています:

loginContext = new LoginContext(moduleName, getUsernamePasswordHandler(userName, secret));
loginContext.login();

私は得ています:

ログイン・エラー: com.ibm.security.krb5.KrbException、状況コード: 14 メッセージ: KDC は暗号化タイプをサポートしていません

あなたは暗号化タイプがサポートされていないと言うでしょう:)私は知っています。

Q: 1) 何が欠けていますか? (ここで 1 週間以上立ち往生しています) 2) 何が間違っていますか?

お時間をいただきありがとうございます。

4

1 に答える 1

0

私があなたの質問に答える前に、あなたはあなたの設定をクリーンアップして再試行する必要があります:

  1. * _enctypesを省略し、両方が最良のenctypeをネゴシエートできるようにします。
  2. アプリ内からプロパティを設定しないでください。krb5.conf場所とenvプロパティを渡します。これにより、完全な柔軟性が得られます。
  3. むしろ、チケットキャッシュまたはキータブを使用する必要があります。クライアントにクレデンシャルを再度要求する意味はありません。これにより、Kerberosが不要になります。OSに1回ログインするだけで、チケットキャッシュを使用できます。
  4. DES暗号化は使用しないでください。安全ではなく、非推奨です。
  5. お持ちのTGTが少なくともRC4(Arcfour)暗号化されていることを確認してください。

あなたの問題はおそらくこれです:

ADは、DESが無効になっているWindows Server 2008ですが、DESの使用を許可しています。これは機能しません。DESは、正当な理由で2008年に無効にされているか、クライアントが上部のenctypesリストにAESを含む最初の要求を送信します。WindowsServer2003はそれを処理することができません。最も一般的な分母はRC4-HMACです。

Wiresharkを使用してトラフィックを検査します。これは、問題とKerberos全般を非常に理解するのに役立ちます。概念実証として役立つ分離されたテストプログラムを作成します。

于 2012-07-21T20:53:11.190 に答える