Simple and Protected GSS-API Negotiation Mechanism (SPNEGO)
トラスト・アソシエーション・インターセプター (TAI) のカスタム構成プロパティーは、SPNEGO
TAI オペレーションのさまざまな性質を制御します。
アプリケーション・サーバーごとに異なるプロパティーの値を指定できます。
以下の表に定義された各プロパティーは、管理コンソール機能を使用して、SPNEGO
TAI の「カスタム・プロパティー」パネルで指定します。
便宜のため、これらのプロパティーをプロパティー・ファイルに配置することができます。
そのようにした場合、SPNEGO TAI は「カスタム・プロパティー」パネルの定義ではなく、
そのファイルから構成プロパティーをロードします。
SPNEGO TAI JVM 構成カスタム・プロパティー
に定義されている com.ibm.ws.security.spnego.propertyReloadFile プロパティーを参照してください。
それぞれの可能な SPN を識別する固有のプロパティー名を割り当てるために、プロパティー名に
SPN<id> が組み込まれ、これが、各 SPN に関連しているプロパティーをグループ化するのに使用されます。
これらの SPN<id> は、プロパティー・グループごとに順番に番号が付けられます。
表 1.
プロパティー名 |
必須 |
デフォルト値 |
com.ibm.ws.security.spnego.SPN<id>.hostName |
はい |
なし |
com.ibm.ws.security.spnego.SPN<id>.filterClass |
いいえ |
以下の説明を参照してください。 |
com.ibm.ws.security.spnego.SPN<id>.filter |
いいえ |
以下の説明を参照してください。 |
com.ibm.ws.security.spnego.SPN<id>.enableCredDelegate |
いいえ |
false |
com.ibm.ws.security.spnego.SPN<id>.spnegoNotSupportedPage |
いいえ |
以下の説明を参照してください。 |
com.ibm.ws.security.spnego.SPN<id>.NTLMTokenReceivedPage |
いいえ |
以下の説明を参照してください。 |
com.ibm.ws.security.spnego.SPN<id>.trimUserName |
いいえ |
true |
- com.ibm.ws.security.spnego.SPN<id>.hostName
- このプロパティーは必須です。SPNEGO TAI が Kerberos セキュア・コンテキストを設定するのに使用する SPN のホスト名を指定します。
注: このホスト名は、長形式のホスト名です。
例えば、myHostName.austin.ibm.com のようになります。
Kerberos SPN は、HTTP/hostname@realm の形式のストリングです。
SPNEGO プロバイダーは認証プロセスで使用されるセキュリティー・クレデンシャルおよびセキュリティー・コンテキストを取得するために、Java Generic Security Service (JGSS) とともに 完全な SPN を使用します。
- com.ibm.ws.security.spnego.SPN<id>.filterClass
- このプロパティーはオプションです。SPNEGO TAI が SPNEGO 認証の対象の HTTP 要求を選択するのに使用する Java クラスの名前を指定します。
クラスが指定されていない場合は、デフォルトの com.ibm.ws.security.spnego.HTTPHeaderFilter 実装クラスが使用されます。
指定された Java クラスは、com.ibm.wsspi.security.spnego.SpnegoFilter
インターフェースを実装する必要があります。
このインターフェースにはデフォルトの実装が用意されています。
com.ibm.ws.security.spnego.HTTPHeaderFilter クラスを指定して、デフォルトの実装を使用します。
このクラスは、com.ibm.ws.security.spnego.SPN<id>.filter プロパティーで指定された選択ルールを使用します。
- com.ibm.ws.security.spnego.SPN<id>.filter
- このプロパティーはオプションです。指定したクラスで前述のプロパティーとともに使用されるフィルター基準を定義します。
使用される実装クラスにとって意味のある任意の基準を定義します。
com.ibm.ws.security.spnego.HTTPHeaderFilter デフォルト実装クラスはこのプロパティーを使用して、HTTP 要求が
SPNEGO 認証に対して選択されているかどうかを判別するために、HTTP
要求ヘッダーに対して突き合わせる条件を表す選択ルールのリストを定義します。
各条件は、セミコロンで区切られたキーと値のペアで指定されます。
これらの条件は、指定プロパティーでの表示順に左から右へ向かって評価されます。
すべての条件に適合する場合、その HTTP 要求が SPNEGO 認証用に選択されます。
キーと値のペアのキーと値は、どの条件を検査するかを定義する演算子によって区切られます。
このキーは、要求から抽出する HTTP 要求ヘッダーを識別し、この値が演算子の指定に従ってキー値に指定されている値と比較されます。
このキーによって識別されたヘッダーが HTTP 要求に存在しない場合、条件は不適合と見なされます。
すべての標準 HTTP 要求ヘッダーを、キーと値のペアのキーとして使用できます。
有効なヘッダーのリストについては、HTTP 仕様を参照してください。
また、標準 HTTP 要求ヘッダーでは使用できない 2 つのキーが、要求から情報を抽出するために定義されています。これは、選択基準としても便利です。
remote-address キーは、HTTP 要求を送信したクライアント・アプリケーションのリモート TCP/IP アドレスを取得するための疑似ヘッダーとして使用されます。
request-URL キーは、クライアント・アプリケーションが要求を行うために使用する URL を取得するための疑似ヘッダーとして使用されます。
インターセプターは、javax.servlet.http.HttpServletRequest インターフェースの getRequestURL オペレーションの結果を使用して、Web アドレスを構成します。
照会ストリングが存在する場合は、同じインターフェースの getQueryString オペレーションの結果も使用されます。
この場合、完全な URL は以下のように構成されます。
String url = request.getRequestURL() + ‘?’ + request.getQueryString();
以下の演算子および条件が定義されています。
表 2. フィルター条件および演算子
条件 |
オペレーター |
例 |
正確に一致 |
= = 引数が等しいかどうかが比較されます。
|
host=host.my.company.com |
部分的に一致 (含む) |
%= 部分的な一致を有効なものとして引数を比較します。
|
user-agent%=IE 6 |
部分的に一致 (複数の中の 1 つ) |
^= 指定された多くの引数の中の 1 つと一致する部分一致を有効なものとして比較します。
|
request-url^=webApp1|webApp2|webApp3 |
一致しない |
!= 引数が等しくないかどうかが比較されます。
|
request-url!=noSPNEGO |
より大きい |
> 引数が辞書的により大きいかどうかが比較されます。
|
remote-address>192.168.255.130 |
より小さい |
< 引数が辞書的により小さいかどうかが比較されます。
|
remote-address<192.168.255.135 |
- com.ibm.ws.security.spnego.SPN<id>.enableCredDelegate
- このプロパティーはオプションです。Kerberos 代行クレデンシャルを、SPNEGO TAI によって保管するかどうかを指示します。
このプロパティーを使用することにより、アプリケーションは保管されたクレデンシャルを取得し、それらを追加の
SPNEGO 認証用に他のダウンストリームのアプリケーションに伝搬させることができます。
このプロパティーでは、拡張 Kerberos
クレデンシャル代行機能の使用およびアプリケーション開発者によるカスタム・ロジックの作成が必要です。
開発者は、要求を発信したエンド・ユーザーに代わって代行 Kerberos クレデンシャルを使用して、Kerberos 発券サービス (TGS) と直接対話することにより、発券許可証 (TGT) を取得する必要があります。
また、開発者は、適切な Kerberos SPNEGO トークンを構成して、それを HTTP 要求に含めることで、ダウンストリームの SPNEGO 認証プロセスを継続する必要があります。これには、必要に応じて、追加の SPNEGO ユーザー確認のための質問への応答交換の処理が含まれます。
- com.ibm.ws.security.spnego.SPN<id>.spnegoNotSupportedPage
- このプロパティーはオプションです。SPNEGO 認証をサポートしない場合に、(ブラウザー) クライアント・アプリケーションが表示する、SPNEGO TAI が HTTP 要求に含めるコンテンツを含むリソースの Web アドレスを指定します。
ここでは、Web (http://) またはファイル (file://) のリソースを指定できます。
このプロパティーが指定されていない場合や、インターセプターが指定されたリソースを見つけられなかった場合は、
以下のコンテンツが使用されます。
<html><head><title>SPNEGO authentication is not supported</title></head>
<body>SPNEGO authentication is not supported on this client</body></html>;
- com.ibm.ws.security.spnego.SPN<id>.NTLMTokenReceivedPage
- このプロパティーはオプションです。ユーザー確認のための質問への応答ハンドシェークが、予想された SPNEGO トークンの代わりに NT LAN Manager (NTLM) トークンを含んでいた場合に、SPNEGO トークンがインターセプターによって受信された際、(ブラウザー) クライアント・アプリケーションが表示する、SPNEGO TAI が HTTP 要求に含めるコンテンツを含むリソースの Web アドレスを指定します。
ここでは、Web (http://) またはファイル (file://) のリソースを指定できます。
このプロパティーが指定されていない場合や、インターセプターが指定されたリソースを見つけられなかった場合は、以下のコンテンツが使用されます。
<html><head><title>An NTLM Token was received.</title></head>
<body>Your browser configuration is correct, but you have not logged into a supported
Microsoft(R) Windows(R) Domain.
<p>Please login to the application using the normal login page.</html>
- com.ibm.ws.security.spnego.SPN<id>.trimUserName
- このプロパティーはオプションです。SPNEGO TAI が、Kerberos レルム名に先行する、「@」で開始されるプリンシパル・ユーザー名のサフィックスを除去する (true) か除去しない (false) かを指定します。
このプロパティーを true に設定すると、プリンシパル・ユーザー名のサフィックスは除去されます。
このプロパティーを false に設定すると、プリンシパル・ユーザー名のサフィックスは残されます。
使用されるデフォルト値は true です。
以下に例を示します。
com.ibm.ws.security.spnego.SPN<id>.trimUserName = true の場合
bobsmith@myKerberosRealm becomes bobsmith
com.ibm.ws.security.spnego.SPN<id>.trimUserName = false の場合
bobsmith@myKerberosRealm remains bobsmith@myKerberosRealm
注: これらの SPNEGO TAI プロパティーの操作に、以下のコマンド・タスクを使用することができます。