SPNEGO トラスト・アソシエーション・インターセプター (TAI) のトラブルシューティングのヒント (非推奨)
ここで提供しているのは、Simple and Protected GSS-API Negotiation (SPNEGO) TAI の問題および例外の診断に役立つトラブルシューティングのヒントのリストです。

WebSphere® Application Server バージョン 6.1 では、Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) を使用して、保護されたリソースに関する HTTP 要求を安全にネゴシエーションし認証する、トラスト・アソシエーション・インターセプター (TAI) が導入されました。 WebSphere Application Server 7.0 では、この機能は推奨されません。代わりに、SPNEGO フィルターの動的再ロードを提供し、アプリケーション・ログイン方式へのフォールバックを可能にするために、SPNEGO Web 認証が用意されています。
depfeatトレース | 使用方法 |
---|---|
com.ibm.security.jgss.debug | JGSS コードを最初から終わりまでトレースするには、この JVM カスタム・プロパティーを all に設定します。trace.log ファイル、および SystemOut.log にメッセージが出力されます。 |
com.ibm.security.krb5.Krb5Debug | Kerberos5 固有の JGSS コードを最初から終わりまでトレースするには、 この JVM カスタム・プロパティーを all に設定します。trace.log ファイル、および SystemOut.log にメッセージが出力されます。 |
com.ibm.ws.security.spnego.* | このトレースをオンにするには、trace.log ファイルにメッセージが出力されます。 | を使用します。
問題: WebSphere Application Server の時刻が、Active Directory (AD) ドメイン・コントローラーの時刻に、5 分以内で同期化されない。
症状 | ユーザー処置 |
---|---|
|
この問題を解決するには、WebSphere Application Server のシステム時刻を AD サーバーの時刻の 5 分以内に同期化することをお勧めします。ベスト・プラクティスは、タイム・サーバーを使用して、すべてのシステムを同期化しておくことです。また、Kerberos 構成ファイル内で clockskew パラメーターを追加したり、調整したりすることもできます。 注: clockskew パラメーターのデフォルトは 300 秒 (つまり 5 分) です。
|
問題: メカニズム 1.3.6.1.5.5.2 の名前を作成するために 使用できるファクトリーがない。
問題 | 症状 | ユーザー処置 |
---|---|---|
例外の発生: メカニズム 1.3.6.1.5.5.2 の名前を作成するために 使用できるファクトリーがない。 特定のメカニズムの名前を作成する処理を行うために、 使用できるファクトリーがありません。 |
|
java.security ファイルを調べて、このファイルに IBMSPNEGO セキュリティー・プロバイダーが含まれていることと、そのプロバイダーが正しく定義されていることを確認してください。java.security ファイルには、
次のような行が含まれている必要があります。
|
問題: JGSS ライブラリーが SPNEGO トークンを処理しようとしたときに、例外が発生する。
症状 | 説明 | ユーザー処置 |
---|---|---|
JGSS ライブラリーが SPNEGO トークンを処理しようとしたときに、
次のようなエラーが表示されます。
|
この例外は、チケットのデコード時に、
エンコード時と異なる鍵を使用した結果、発生したものです。
この状態には、以下のようなさまざまな原因が考えられます。
|
Kerberos キータブ・ファイルに
関わる問題の場合は、キータブ・ファイルを再生成してください。問題が複数の SPN 定義に関わるものである場合は、余分な SPN または競合している SPN を除去し、その SPN が Active Directory に登録されていないことを確認してから、その SPN を追加します。他のエントリーで SPN と衝突する SPN が定義されていないか、Active Directory を検索する必要がある場合があります。 SPN が登録されていないことを確認するには、以下のコマンドを実行します。
これには、以下の応答が返されます。
|
問題: シングル・サインオン (SSO) が行われない。
症状 | 説明 | ユーザー処置 |
---|---|---|
トレースが使用可能になっている場合は、以下のメッセージが表示されます。
|
許可確認に対して、
クライアントが SPNEGO トークンでは
なく、NT LAN マネージャー (NTLM) 応答を返しています。
この状態は、以下のいずれかが原因で発生することがあります。
|
SPN が誤って HTTP/server.realm.com@REALM.COM のように @REALM.COM が付加されて定義されている場合は、そのユーザーを削除して定義し直し、SPN を再定義してください。 Kerberos キータブ・ファイルに 関わる問題の場合は、キータブ・ファイルを再生成してください。 問題が複数の SPN 定義のどちらかのカテゴリーに関わるものである場合は、余分な SPN または競合している SPN を除去し、その SPN が Active Directory に登録されていないことを確認してから、その SPN を追加します。SPN の複数定義の原因となる他の SPN エントリーを Active Directory で検索できます。以下のコマンドは、複数の SPN 定義を判別するのに有効です。
|
問題: クレデンシャル代行が稼働していない。
症状 | 説明 | ユーザー処置 |
---|---|---|
無効なオプションが検出されました。
トレースが使用可能になっている場合は、以下のメッセージが表示されます。
|
Kerberos 構成ファイルが、正しく構成されていません。 | renewable または proxiable が true に設定されていることを確認してください。 |
問題: RC4-HMAC 暗号化を使用して SSO を作動させることができない。
症状 | 説明 | ユーザー処置 |
---|---|---|
トレースがオンの場合に受け取る、トレース内の次のメッセージを調べてください。
|
Microsoft Windows 2003 より前のバージョンの Kerberos 鍵配布センター (KDC) では、RC4-HMAC 暗号化はサポートされません。
この状態を確認するには、トレースを調べて、例外がスローされている場所を特定します。
着信チケットの内容がトレース内に表示されます。この着信チケットは暗号化されていますが、サービスの SPN は読み取り可能です。Microsoft Windows 2003 より前のバージョンを KDC としており、このシステムが RC4-HMAC を使用するよう構成されている場合は、(期待されていた HTTP/hostname.realm@REALM ではなく) userid@REALM のチケットを表すストリングが表示されます。例えば、以下に、Microsoft Windows 2003 より前のバージョンによる KDC から受け取ったチケットの先頭部分を示します。
レルムは REALM.COM です。サービス名は、userid です。同一の SPN に対して正しく形成されているチケットは、以下のようになります。
|
この問題を解決するには、 単一データ暗号化規格 (DES) を使用するか、KDC に Microsoft Windows 2003 Server を使用してください。 忘れずに SPN および Kerberos キータブ・ファイルを再生成してください。 |
問題: SPNEGO SSO を介して、 保護されている URL にアクセスすると、 以下のメッセージが表示されます。
症状 | 説明 | ユーザー処置 |
---|---|---|
次のメッセージを調べてください。
|
このメッセージは、Apache/IBM HTTP Server によって生成されます。 このサーバーは、ユーザーのブラウザーから戻された許可ヘッダーが大きすぎることを示しています。 (前のエラー・メッセージ内の) Negotiate という語の後の長いストリングは、SPNEGO トークンです。この SPNEGO トークンは、Microsoft Windows Kerberos トークンのラッパーです。Microsoft Windows の Kerberos トークンには、ユーザーの PAC 情報が含まれています。ユーザーが属しているセキュリティー・グループが増えると、それだけ多くの PAC 情報が Kerberos トークンに挿入され、SPNEGO が大きくなっていきます。IBM HTTP Server 2.0 は (また、Apache 2.0 および IBM HTTP Server 6.0 も)、 受け入れ可能な HTTP ヘッダーのサイズを 8K に制限しています。多くのグループを持ち、ユーザーのメンバーシップが多くのグループに属している Microsoft Windows ドメインでは、 ユーザーの SPNEGO トークンのサイズが 8K の制限を超える場合があります。 | 可能であれば、ユーザーがメンバーとなっている
セキュリティー・グループの数を減らしてください。
IBM HTTP Server 2.0.47 フィックスパック PK01070 では、Microsoft の制限である 12K 以上の HTTP ヘッダー・サイズを使用できます。WebSphere Application Server バージョン 6.0 のユーザーは、このフィックスをフィックスパック 6.0.0.2 で入手できます。 注: Apache 以外をベースとする Web サーバーの場合は、別の解決策が必要になる場合があります。
|
問題: JGSS トレースを使用不可にしているにも かかわらず、KRB_DBG_KDC メッセージが SystemOut.log に複数登場する。
症状 | 説明 | ユーザー処置 |
---|---|---|
JGSS トレースが使用不可であっても、 SystemOut.log を調べて、 そこに KRB_DBG_KDC メッセージが表示されていることを確認してください。 | ほとんどの JGSS トレースは、com.ibm.security.jgss.debug プロパティーによって制御されますが、 小さなメッセージ・セットは com.ibm.security.krb5.Krb5Debug プロパティーによって制御されます。 com.ibm.security.krb5.Krb5Debug プロパティーの値がデフォルトの場合、いくつかのメッセージが SystemOut.log に書き込まれます。 | すべての KRB_DBG_KDC メッセージを
SystemOut.log から除去するには、JVM
プロパティーを以下のように設定します。
|
問題: アプリケーションにカスタム HTTP 401 エラー・ページが含まれており、 SPNEGO TAI で生成された HTTP 応答ページがブラウザーに表示されない。
症状 | 説明 | ユーザー処置 |
---|---|---|
アプリケーションにカスタム HTTP 401 エラー・ ページが含まれている場合、Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) トラスト・アソシエーション・インターセプター (TAI) で 生成された HTTP 応答ページが、ブラウザーに表示されません。 | アプリケーションに カスタム HTTP 401 エラー・ページが含まれている 場合、SPNEGO TAI で生成された HTTP 応答ページは ブラウザーに表示されません。 代わりに、カスタム HTTP 401 エラー・ページが表示されます。 | HTTP 401 ページをカスタマイズして、SPNEGO を 使用するようにブラウザーを構成する方法についての 情報を含めることができます。 詳しくは、SPNEGO TAI を使用するためのクライアント・ブラウザーの構成 (非推奨)およびSPNEGO TAI カスタム・プロパティー構成 (非推奨)を参照してください。 |
問題: ユーザー ID/パスワードを 使用したログイン・ステップを行っている 場合、SPNEGO TAI との相互作用中に HTTP Post パラメーターが失われる。
症状 | 説明 | ユーザー処置 |
---|---|---|
ユーザー ID/パスワードを使用したログイン・ステップを行っている場合、SPNEGO TAI との相互作用中に HTTP Post パラメーターが失われる。 「ユーザー ID/パスワードを使用したログイン・ステップを行う」とは、Microsoft Internet Explorer が、最初に SPNEGO トークンを使用して、応答を試行していることを意味します。この応答が失敗すると、Microsoft Internet Explorer は、 ユーザー ID/パスワード確認によって取得する NTLM トークンを使用して、 応答を試行します。 |
Microsoft Internet Explorer は、ユーザーからの要求中、状態を維持します。要求に対して「HTTP 401 Authenticate Negotiate」という応答が与えられ、ブラウザーがそれに対して、ユーザー/パスワードの要請で取得された NTLM トークンで応答した場合、そのブラウザーは要求を再処理依頼します。この 2 回目の要求に対して、リダイレクト先は同じ URL であるが、(Javascript を介して) 新しい引数が指定されている HTML ページで応答した場合、ブラウザーは POST パラメーターを再処理依頼しません。 注: この問題を回避するには、自動リダイレクトを実行しないことが重要です。ユーザーがリンクをクリックした場合、この問題は発生しません。
|
ブラウザーは、認証/折衝の確認に対して、 SPNEGO トークンではなく NTLM トークンで応答します。 SPNEGO TAI は NTLM を認識するので、HTML ページとともに HTTP 403 応答を戻します。 ブラウザーが JavaScript の redirTimer 関数を実行すると、 元の要求にあった POST または GET パラメーターは失われます。 SPN<id>.NTLMTokenReceivedPage プロパティーを使用することにより、
ユーザーに適切なメッセージ・ページを返すことができます。(ユーザー定義プロパティーがない場合に) 戻されるデフォルト・メッセージは、以下のとおりです。
SPN<id>.NTLMTokenReceivedPage プロパティーを使用すると、正確な応答をカスタマイズできます。 戻された HTML がリダイレクトを実行しないことが重要です。 付属のデフォルト HTTPHeaderFilter クラスを SPN<id>.filterClass として使用するよう SPNEGO TAI が 構成されていた場合、SPN<id>.filter を使用して、標準の WebSphere Application Server セキュリティー・メカニズムに、2 回目の要求を直接送ることができます。 ユーザーが経験しているのは、このような標準の認証メカニズムです。 必須の SPNEGO TAI プロパティーと HTML ファイルの内容を示した、そのような構成の例を以下に示します。
注: filter プロパティーが、SPNEGO TAI に対して、「noSPNEGO」というストリングを含む HTTP 要求をインターセプトしないように指示していることに注意してください。
以下に、役立つ応答を生成する場合の例を示します。
|
問題: トラスト・アソシエーション・インターセプター (TAI) が initialize(Properties) メソッドを呼び出さない
TAI がロードされたのに、initialize(Properties) メソッドが呼び出されないことがトレースで示されることがあります。始動中に getVersion() メソッドのみが呼び出されるように見えます。
TAI にカスタム・プロパティーが定義されている場合は、WebSphere の TAI のプロセスでは initialize(Properties) のみが呼び出されます。
この問題を解決するには、未使用の TAI カスタム・プロパティーを定義します (例えば、com.ibm.issw.spnegoTAI.NumberOfServers=0)。
問題: トラスト・アソシエーション・インターセプター (TAI) によるロードが適切でない
SPNEGO014: Kerberos initialization Failure: org.ietf.jgss.GSSException, major code: 13, minor code: 0
major string: Invalid credentials
minor string: SubjectKeyFinder: no JAAS Subject
at com.ibm.security.jgss.i18n.I18NException.throwGSSException(I18NException.java:12)
…
これの考え得る原因は、JVM カスタム・プロパティー javax.security.auth.useSubjectCredsOnly の値が false に設定されていないことです。
この問題を解決するには、TAI に対して有効になっている各 JVM に JVM カスタム・プロパティーを javax.security.auth.useSubjectCredsOnly=false と定義します。
問題: トラスト・アソシエーション・インターセプター (TAI) のパラメーターを追加するための JACL スクリプトのデフォルトの文字が問題を発生させている可能性があります。
TAI パラメーターを追加するための JACL スクリプトは、定位置パラメーターを受け取ります。デフォルトを受け取るためには、「.」を指定します。一部の WebSphere プラットフォームでは、「.」を指定すると、そのプロパティーが「.」の値で追加されることがあります。
(プラットフォームに関係なく) 常に、管理コンソールを使用して、追加されたプロパティーが期待どおりのものであることを確認してください。プロパティーが期待どおりでない場合は、手動で修正してください。