次に、ログイン実行時に発生する可能性のある問題、およびその解決方法に関する提案を示します。
java.security.krb5.kdx
および java.security.krb5.realm.
を介して指定されます。前のリリースでは、Kerberos 構成値への変更は、アプリケーションが再起動された場合にのみ有効になりました。Krb5LoginModule
へのエントリに、新しい boolean 型オプション refreshKrb5Config
を指定できます。このオプションが true
に設定されている場合は、Krb5LoginModule
の login メソッドが呼び出される前に、構成値がリフレッシュされます。refreshKrb5Config
を true.
に設定する必要があります。この値を設定しないと、予期しない結果が発生することがあります。原因: JAAS ログイン構成ファイルの処理で問題が発生しました。原因は、ファイル内の構文エラーと考えられます。
解決法: 構成ファイルに誤りがないか、注意深く確認します。ログイン構成ファイルに必要な構文の詳細は、「JAAS ログイン構成ファイル」を参照してください。
原因 1: 入力されたパスワードが無効です。
解決法 1: パスワードを確認します。
原因 2: 鍵の取得にキータブを使用している場合 (JAAS ログイン構成ファイルの Krb5LoginModule エントリで、useKeyTab
オプションを true
に設定するなど)、キータブの更新後に鍵が変更された可能性があります。
解決法 2: Kerberos ドキュメントを参照して新規 keytab を生成し、そのキータブを使用します。
原因 3: クロックスキュー - KDC 上の時間とクライアント上の時間が大きく異なる場合 (通常は 5 分)、エラーが返されることがあります。
解決法 3: クロックを同期させます (またはシステム管理者に同期を依頼)。
原因 4: Kerberos レルム名がすべて大文字になっていません。
解決法 4: Kerberos レルム名をすべて大文字にします。注:すべて大文字のレルム名を使用するよう推奨されています。詳細については、このチュートリアルの「レルム名とホスト名の命名規則」セクションを参照してください。
原因: Kerberos は KDC のクロックとクライアントのクロックがほぼ同期していることを要求します。デフォルトは 5 分以内です。同期していない場合、エラーが発生します。
解決法: クロックを同期させます (またはシステム管理者に同期を依頼)。
原因: Kerberos 構成ファイル krb5.conf
内で、ユーザー名の一部を構成するデフォルトレルムが指定されていません (Kerberos 構成ファイルを使用する場合)。または、デフォルトレルムが、java.security.krb5.realm
システムプロパティーで指定されていません。
解決法: Kerberos 構成ファイル内 (使用する場合) にデフォルトレルムを指定するエントリが含まれているかどうかを確認します。または、java.security.krb5.realm
システムプロパティー値にデフォルトレルムを直接指定し、Kerberos による認証時にこれをユーザー名に含めます。
解決法: Kerberos KDC が起動済みで、稼動中であることを確認します。
原因: 有効な Kerberos 資格の取得が行われていない場合、このエラーが発生します。特に、基盤となるメカニズムで資格の取得を行う予定であったのに、javax.security.auth.useSubjectCredsOnly
システムプロパティー値を false
に設定すること (たとえば、実行コマンドに -Djavax.security.auth.useSubjectCredsOnly=false
を含めて) を忘れてしまった場合、このエラーが発生します。
解決法: JAAS を使って認証を実行するアプリケーションやラッパープログラム (このシリーズのチュートリアルで使用した Login ユーティリティーなど) ではなく、基盤となるメカニズムで資格の取得を行う場合、javax.security.auth.useSubjectCredsOnly
システムプロパティー値を確実に false
に設定します。
原因: チュートリアルのサンプル実行コマンドは、java.security.krb5.realm
および java.security.krb5.kdc
システムプロパティーの値を設定することにより、デフォルトの Kerberos レルムおよび KDC を指定します。必要に応じて、これらのシステムプロパティーの代わりに、Kerberos 構成ファイル krb5.conf
を使用できます。Kerberos 構成ファイルには、デフォルトのレルムおよび KDC の情報が含まれます。krb5.conf
ファイルを使用するには、システムプロパティー java.security.krb5.conf
を (realm
および kdc
プロパティーの代わりに) 使用してファイルの位置を指定します。これらのプロパティーがいずれも設定されていない場合、デフォルト位置で krb5.conf
ファイルの検出が試みられます。ファイルが見つからない場合、「Could not load configuration file <krb5.conf> (No such file or directory)」というエラーが表示されます。
解決法: Kerberos 構成ファイル krb5.conf
が、利用可能かつ読み取り可能であることを確認します。krb5.conf
ファイルの位置指定方法、および位置を明示的に指定しない場合のデフォルト検索位置については、「Kerberos 要件」を参照してください。
原因 1: 使用する KDC が、要求された暗号化タイプをサポートしません。
解決法 1: Sun の Kerberos 実装では、暗号化タイプとして、des-cbc-md5
、des-cbc-crc
、および des3-cbc-sha1
をサポートしています。
アプリケーションでは、Kerberos 構成ファイル krb5.conf
で次のタグを指定することにより、適当な暗号化タイプを選択できます。
[libdefaults] default_tkt_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 default_tgs_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 permitted_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1指定しない場合のデフォルト値は次のとおりです。
des-cbc-md5 des-cbc-crc des3-cbc-sha1
原因 2: この例外は、いくつかの Windows プラットフォームでネイティブチケットキャッシュを使用するとスローされます。Microsoft は新機能を追加しており、その機能では Ticket Granting Tickets (TGT) のセッション鍵がエクスポートされなくなっています。そのため、Windows で取得したネイティブ TGT は、「空の」セッション鍵と null の EType を持つことになります。このエラーが発生するプラットフォームは、Windows Server 2003、Windows 2000 Server Service Pack 4 (SP4)、Windows XP SP2 などです。
解決法 2: Windows のレジストリをアップデートして、この新機能を無効にする必要があります。レジストリキー allowtgtsessionkey
を追加し、正しく設定して、Kerberos の Ticket Granting Ticket でセッション鍵が送信されるようにしてください。
Windows Server 2003 と Windows 2000 SP4 の場合に必要とされるレジストリ設定を次に示します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters Value Name: allowtgtsessionkey Value Type: REG_DWORD Value: 0x01 ( default is 0 )デフォルトでは値が 0 に設定されています。「0x01」に設定することにより、セッション鍵を TGT に含めることができます。
Windows XP SP2 のレジストリ設定の位置を次に示します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\ Value Name: allowtgtsessionkey Value Type: REG_DWORD Value: 0x01
原因: KDC により、クライアントが認識不可能な応答が返されました。
解決法: krb5.conf
ファイルの構成パラメータすべてが適正に設定されていることを確認し、KDC ベンダー提供のガイドを参照してください。
sun.security.krb5.debug
を「true」に設定することで、デバッグモードを有効にできます。この設定により、プログラムが Kerberos V5 プロトコルを実行する様子を確認できます。直面している問題についての情報をフィードバックする場合は、完全なデバッグ出力を含めていただけると非常に助かります。