メッセージの認証性を保護するためのコンシューマー・トークンの検証

トークン・コンシューマー情報は、コンシューマー側で セキュリティー・トークンを取りみ、検証するために使用されます。デフォルトでは、ユーザー名トークン、 X509 トークン、LTPA トークンがメッセージの認証性に使用されます。

始める前に

Web Services Security ランタイムにおけるトークン処理とプラグ可能なトークン・アーキテクチャーは、Web Services Security API (WSS API) から同じセキュリティー・トークン・インターフェースおよび Java™ 認証・承認サービス (JAAS) ログイン・モジュールを再使用します。同じ実装のトークン作成および検証を、Web Services Security ランタイムの WSS API および WSS SPI の両方で使用できます。

制約事項: com.ibm.wsspi.wssecurity.token.TokenConsumingComponent インターフェースは、JAX-WS Web サービスでは使用されません。JAX-RPC Web サービスを使用している場合、このインターフェースは引き続き有効です。

現在の OASIS Web Services Security ドラフト仕様では KeyName ポリシー表明が定義されていないため、鍵の名前 (KeyName) エレメントがサポートされないことに、注意してください。

このタスクについて

JAAS コールバック・ハンドラー (CallbackHandler) および JAAS ログイン・モジュール (LoginModule) は、ジェネレーター側でのセキュリティー・トークンの作成と、コンシューマー側でのセキュリティー・トークンの検証 (認証) を受け持ちます。

例えばジェネレーター側では、JAAS LoginModule によってユーザー名トークンが 作成され、JAAS CallbackHandler を使用して認証データが渡されます。JAAS LoginModule は、ユーザー名の SecurityToken オブジェクトを作成し、それを Web Services Security ランタイムに渡します。

そして、コンシューマー側で、ユーザー名トークンの XML フォーマットが検証または認証のために JAAS LoginModule に渡され、JAAS CallbackHandler を使用して、認証データが Web Services Security ランタイムから LoginModule に渡されます。トークンが認証されると、ユーザー名の SecurityToken オブジェクトが作成され、それが Web Services Security ランタイムに渡されます。

注: WebSphere® Application Server は、 WebSphere Application Server のデフォルト・ログイン・モジュール実装では、スタック可能な ログイン・モジュールをサポートしません。つまり、ログイン・モジュールは WebSphere Application Server ログイン・モジュール 実装の前か後に追加する必要があります。デフォルト実装が存在しないため、ログイン・モジュール実装を スタックする場合は、必要なログイン・モジュールを 作成しなければなりません。
WebSphere Application Server が 提供する com.ibm.websphere.wssecurity.wssapi.token パッケージは、 以下のクラスをサポートしています。
  • セキュリティー・トークン (SecurityTokenImpl)
  • バイナリー・セキュリティー・トークン (BinarySecurityTokenImpl)
また、WebSphere Application Server は、セキュリティー・トークン用の 以下の事前構成済みサブインターフェースも提供します。
  • 派生鍵トークン
  • セキュリティー・コンテキスト・トークン (SCT)
  • ユーザー名トークン
  • LTPA トークンの伝搬
  • LTPA トークン
  • X509PKCS7 トークン
  • X509PKIPath トークン
  • X509v3 トークン
  • Kerberos v5 トークン

メッセージの認証性には、デフォルトでユーザー名トークン、X.509 トークン、 および LTPA トークンが使用されます。デフォルトでは、署名および暗号化に 派生鍵トークンと X.509 トークンが使用されます。

クライアントでは、 WSS API と WSS SPI のみがサポートされます。コンシューマー側でセキュリティー・トークン・タイプを 指定するには、管理コンソールからポリシー・セットを構成する方法もあります。 また、ジェネレーター・セキュリティー・トークンの突き合わせに WSS API またはポリシー・セットを 使用することもできます。

デフォルトのログイン・モジュールとコールバック実装は、 ペアとして、つまりジェネレーター・パーツとコンシューマー・パーツの両方で使用するように 設計されています。デフォルト実装を使用するためには、該当するジェネレーター・セキュリティー・トークンと コンシューマー・セキュリティー・トークンをペアで選択します。例えば、X.509 トークンが必要な場合は、 トークン生成プログラムで system.wss.generate.x509 を選択し、 トークン・コンシューマーで system.wss.consume.x509 を選択します。

コンシューマー側のセキュリティー・トークンを構成するには、 WSS API から該当する事前構成済みのトークン・コンシューマー・インターフェースを使用して、 以下のトークン構成プロセスの手順を実行します。

手順

  1. wssFactory インスタンスを生成します。
  2. wssConsumingContext インスタンスを生成します。

    WSSConsumingContext インターフェースは、検証、暗号化解除、セキュリティー・トークン、 タイム・スタンプなどの Web Services Security (WS-Security) を消費するためのコンポーネントを保管します。 validate() メソッドが呼び出されると、これらのコンポーネントはすべて検証されます。

  3. コンシューマー側のコンポーネント (WSSVerification オブジェクト、WSSDecryption オブジェクトなど) を作成します。
  4. JAAS ログイン構成の名前を指定することにより、JAAS 構成を指定します。 Java Authentication and Authorization Service (JAAS) 構成は、 JAAS 構成の名前を指定します。 JAAS 構成は、コンシューマー・サイドでトークンがログインする方法を指定します。 事前定義システムまたはアプリケーション・ログイン構成は除去しないでください。 ただし、これらの構成内では、モジュール・クラス名の追加、 および WebSphere Application Server が各モジュールをロードする順序の指定を行うことができます。
  5. トークン・コンシューマー・クラス名を指定します。 トークン・コンシューマー・クラス名では、 SecurityToken の検証に必要な情報を指定します。 メッセージの認証性には、デフォルトでユーザー名トークン、X.509 トークン、 および LTPA トークンが使用されます。
  6. コールバック・ハンドラーのクラス名を指定することによりコールバック・ハンドラーの設定を指定し、 コールバック・ハンドラーの鍵も指定します。 このクラス名は、セキュリティー・トークン・フレームワークのプラグインに使用される コールバック・ハンドラー実装クラスの名前です。
    WebSphere Application Server は、 コンシューマー側に以下のデフォルトのコールバック・ハンドラー実装を 提供します。
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    このクラスは、名前と値のペアを Web Services Security (WS-Security) 構成 XMI ファイルの エレメントに処理するためのコールバックです。
    ccom.ibm.websphere.wssecurity.callbackhandler.UNTConsumeCallbackHandler
    このクラスは、コンシューマー側のユーザー名トークン用の コールバック・ハンドラーです。このインスタンスは WSSConsumingContext オブジェクトに設定され、 ユーザー名トークンを検証するのに使用されます。この実装は、 Java Platform, Enterprise Edition (Java EE) アプリケーション・クライアントに対してのみ使用してください。
    com.ibm.websphere.wssecurity.callbackhandler.X509ConsumeCallbackHandler
    このクラスは、コンシューマー側でバイナリー・セキュリティー・トークンとして SOAP メッセージ内の Web Services Security ヘッダーに挿入される X.509 証明書を検証するために使用される、コールバック・ハンドラーです。このインスタンスは、 WSSVerification オブジェクトと WSSDecryption オブジェクトを生成し、そのオブジェクトを WSSConsumingContext オブジェクトに組み込んで、X.509 バイナリー・セキュリティー・トークンを検証するために使用されます。 このコールバック・ハンドラーには、鍵ストアおよび鍵定義が必要です。この実装を 使用する場合、ジェネレーター側で鍵ストア・パスワード、パス、およびタイプが 提供されている必要があります。
    com.ibm.websphere.wssecurity.callbackhandler.LTPAConsumeCallbackHandler
    このクラスは、コンシューマー側の Lightweight Third Party Authentication (LTPA) トークン用のコールバック・ハンドラーです。このインスタンスは、WSSVerification オブジェクトおよび WSSDecryption オブジェクトを生成して LTPA トークンを検証するために使用されます。

    このコールバック・ハンドラーは、バイナリー・セキュリティー・トークンとして SOAP メッセージ内の Web Services Security ヘッダーに挿入される、LTPA セキュリティー・トークンを検証するために使用されます。ただし、ユーザー名およびパスワードが指定される場合、 WebSphere Application Server は、Run As Subject から LTPA セキュリティー・トークンを取得するのではなく、 ユーザー名およびパスワードを認証してこれを取得します。このコールバック・ハンドラーは、Web サービスがアプリケーション・サーバー上でクライアントとして機能している場合のみ使用してください。 このコールバック・ハンドラーを Java EE アプリケーション・クライアント上で使用することはお勧めしません。 この実装を使用する場合、ジェネレーター側で基本認証のユーザー ID とパスワードが 提供されている必要があります。

    com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler
    このクラスは、コンシューマー側の Kerberos v5 トークン用のコールバック・ハンドラーです。 このインスタンスは、WSSConsumingContext オブジェクトを設定して Kerberos v5 AP-REQ を バイナリー・セキュリティー・トークンとしてコンシュームするために使用されます。 また、このインスタンスは、WSSVerification および WSSDecryption オブジェクトを生成して SOAP メッセージの検証および暗号化解除で Kerberos セッション鍵または派生鍵を使用するためにも使用されます。
  7. X.509 トークンが指定されている場合は、その他のトークン情報も 指定されています。
    表 1. X.509 トークン用情報. X.509 トークンを使用してメッセージを認証します。
    トークン情報 説明
    keyStoreRef 鍵ロケーターで使用される鍵ストアの 参照名。
    keyStorePath 必要に応じて鍵ストアがロードされる 鍵ストア・ファイルのパス。パス名に ${USER_INSTALL_ROOT} を使用することをお勧めします。 この変数は、ご使用のマシンの WebSphere Application Server パスに展開されます。 このパスは、X.509 トークンのコールバック・ハンドラー実装を 使用する場合には必須です。
    keyStorePassword 鍵ストアの保全性検査に使用されるパスワード、 または鍵ストアのアンロックや鍵ストア・ファイルへのアクセスに使用される 鍵ストア・パスワード。鍵ストアとその構成は、 WebSphere Application Server が提供する一部のデフォルト・コールバック・ハンドラー実装で 使用されます。
    keyStoreType 鍵ロケーターで使用される鍵ストアの 鍵ストア・タイプ。この選択項目で、鍵ストア・ファイルが使用するフォーマットを 指定します。選択できる値は次のとおりです。
    JKS
    鍵ストアが Java Keystore (JKS) フォーマットを使用している場合、このオプションを使用します。
    JCEKS
    Java Cryptography Extension が Software Development Kit (SDK) で構成されている場合には、このオプションを使用します。 デフォルトの IBM® JCE が、WebSphere Application Server で構成されます。 このオプションは、Triple DES 暗号化を使用することによって、保管された秘密鍵の保護をより強力にします。
    JCERACFKS
    証明書が SAF 鍵リングに保管されている場合は、JCERACFKS を使用します (z/OS® のみ)。
    PKCS11KS (PKCS11)
    鍵ストアが PKCS#11 ファイル・フォーマットを使用する場合、このフォーマットを使用します。鍵ストアで このフォーマットを使用すると、暗号ハードウェア上に RSA 鍵が含まれるか、 暗号ハードウェアを使用する暗号化鍵が含まれ、データを確実に保護することができます。
    PKCS12KS (PKCS12)
    鍵ストアが PKCS#12 ファイル・フォーマットを使用する場合、このオプションを使用します。
    alias 鍵別名。鍵の別名は、鍵ロケーターが 鍵ストア・ファイル内の鍵を探し出すときに使用されます。
    keyPassword 鍵のリカバリーに使用される鍵パスワード。 このパスワードは、鍵ストア・ファイル内の鍵オブジェクトにアクセスする際に必要です。
    keyName 鍵の名前。デジタル署名の場合、 メッセージのデジタル署名に使用される鍵を判別するために、 この鍵名が要求生成プログラムまたは応答コンシューマーの署名情報によって使用されます。 暗号化の場合、この鍵名は、暗号化に使用される鍵を判別するために使用されます。 鍵名は、 完全修飾識別名 (DN) でなければなりません。例えば、CN=Bob,O=IBM,C=US のようにします。
    trustAnchorPath トラスト・アンカーのロード元ファイル・パス。
    trustAnchorType トラスト・アンカーのタイプ。
    trustAnchorPassword トラスト・アンカーの保全性検査に使用されるパスワード、 または鍵ストアのアンロックに使用されるパスワード。
    certStores 証明書ストアのリスト。コレクション証明書ストアには、信頼されない中間証明書のリストおよび証明書失効リスト (CRL) が含まれます。 コレクション証明書ストアは、 着信する X.509 形式のセキュリティー・トークンの証明書パスを検証するために使用されます。
    provider セキュリティー・プロバイダー。

    X.509 トークンでは、以下を指定できます。

    1. 鍵ストアなし。
    2. トラスト・アンカー付き。 トラスト・アンカーは、 トラステッド・ルート証明書を含む鍵ストア構成のリストを指定します。これらの構成は、着信した X.509 フォーマットのセキュリティー・トークンの証明書パスの妥当性検査に使用されます。 例えば、トラステッド証明書のトラスト・アンカーまたは 証明書ストアを選択した場合、証明書パスを設定する前にそのトラスト・アンカー および証明書ストアを構成する必要があります。
    3. 鍵ロケーターで使用される鍵ストア付き。

      最初に、 鍵ツール・ユーティリティーなどを使用して、鍵ストア・ファイルを作成する 必要があります。この鍵ストアは、X.509 証明書をリトリーブするために使用されます。この項目では、 鍵ストア・ファイルへのアクセスに使用されるパスワードを指定します。トラスト・アンカー内の鍵ストア・オブジェクトには、証明書チェーンの信頼性を検証するために CertPath API が使用するトラステッド・ルート証明書が含まれています。 トラスト・アンカーおよびコレクション証明書ストアの名前は、トークン・コンシューマーの下の証明書パスに作成されます。

    4. 鍵ロケーターおよびトラスト・アンカーで使用される 鍵ストア付き。
    5. 鍵と値のペアを含むマップ付き。 例えば、 値のタイプ名と値のタイプの Uniform Resource Identifier (URI) を 指定できます。値のタイプは、コンシューマー・トークン用の値タイプの名前空間 URI を 指定し、このクラスのトークン・タイプを表します。
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3
      X.509 証明書トークンを指定します。
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
      Public Key Infrastructure (PKI) パスにある X.509 証明書を指定します。 このコールバック・ハンドラーは、 PkiPath フォーマットでエンコードされた X.509 証明書を作成するために使用されます。 この証明書は、バイナリー・セキュリティー・トークン として SOAP メッセージ内で Web Services Security ヘッダーに挿入されます。 このコールバック・ハンドラーには鍵ストアが必要です。 CRL はコールバック・ハンドラーによってサポートされていないため、 コレクション証明書ストアは不要で使用されません。 この実装を使用する場合、このパネルで鍵ストア・パスワード、パス、およびタイプを指定する必要があります。
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7
      X.509 証明書のリストおよび証明書失効リストを PKCS#7 フォーマットで 指定します。このコールバック・ハンドラーは、 PKCS#7 フォーマットでエンコードされる X.509 証明書を作成するために使用されます。 この証明書は、バイナリー・セキュリティー・トークンとして、SOAP メッセージの Web Services Security ヘッダーに挿入されます。 このコールバック・ハンドラーには鍵ストアが必要です。 コレクション証明書ストアで証明書失効リスト (CRL) を指定することができます。 CRL は、PKCS#7 フォーマットの X.509 証明書でエンコードされています。 この実装を使用する場合、 鍵ストア・パスワード、パス、およびタイプを指定する必要があります。

      一部のトークンには、WebSphere Application Server から、 値タイプ用の事前構成済みローカル名が提供されます。以下のローカル名を指定する場合、 値タイプの URI を指定する必要はありません。

      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      LTPA トークンでは、値タイプ・ローカル名に LTPA を使用することが できます。このローカル名を使用すると、値タイプの URI に http://www.ibm.com/websphere/appserver/tokentype/5.0.2 が 指定されます。
      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      LTPA トークンの伝搬では、値タイプ・ローカル名に LTPA_PROPAGATION を 使用することができます。このローカル名を使用すると、値タイプの URI に http://www.ibm.com/websphere/appserver/tokentype が 指定されます。
  8. トークン・コンシューマー・クラス名としてユーザー名トークンが指定されている場合は、 以下のトークン情報を指定できます。
    1. nonce を指定するかどうか。

      このオプションでは、 トークン・コンシューマーに nonce を組み込むかどうかを指定します。nonce はメッセージに組み込まれる 固有の暗号数値であり、ユーザー名トークンの、反復的な未許可の攻撃を防ぐのに 役立ちます。nonce は、検証するトークン・タイプがユーザー名トークンである場合にのみ有効で、 応答コンシューマー・バインディングのためにのみ使用できます。

    2. タイム・スタンプのキーワードを指定します。 このオプションは、 ユーザー名トークンのタイム・スタンプを検証するかどうかを示します。タイム・スタンプは、 取り込まれたトークンのタイプがユーザー名トークンである場合に限り有効です。
    3. 鍵と値のペアを含むマップを指定します。 例えば、 値のタイプ名と値のタイプの Uniform Resource Identifier (URI) を 指定できます。値のタイプは、コンシューマー・トークン用の値タイプの名前空間 URI を 指定し、このクラスのトークン・タイプを表します。
      URI 値タイプ: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
      ユーザー名トークンを指定します。
  9. トークン生成プログラムのクラス名として Kerberos v5 トークンが指定されている場合は、 以下のトークン情報を指定できます。
    トークン情報 説明 デフォルト値
    tokenValueType Oasis Kerberos Token Profile v1.1 仕様で定義されている QName の Kerberos トークン値タイプ。 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ
    requireDKT メッセージ保護用の派生鍵を必要とするブール値。 false
    clabel 派生鍵のクライアント・ラベル。 WS-SecureConversation

    デフォルト値を使用するにはヌルを指定します。

    slabel 派生鍵のサービス・ラベル。 WS-SecureConversation

    デフォルト値を使用するにはヌルを指定します。

    keylen 派生鍵の長さ。 16

    デフォルト値を使用するには、ゼロを指定します。

    supportTokenRequireSHA1 Kerberos トークンがサポート・トークンとして使用される場合に、後続の要求メッセージで使用される SHA1 鍵を必要とするブール値。 false

    SHA1 鍵は、サポート Kerberos トークンが保護されている場合にのみコンシュームされます。 true に設定されている場合、常に SHA1 鍵がコンシュームされます。

    decComponent WSSDecryption のインスタンス。 復号コンポーネントまたは検証コンポーネント用にこれをまず初期化するには、decComponent および verComponent にヌルを設定します。初期化されたコンポーネントは、2 番目のコンポーネントのコールバック・ハンドラー・コンストラクターでのみ使用します。
    verComponent WSSVerfication のインスタンス。 復号コンポーネントまたは検証コンポーネント用にこれをまず初期化するには、decComponent および verComponent にヌルを設定します。初期化されたコンポーネントは、2 番目のコンポーネントのコールバック・ハンドラー・コンストラクターでのみ使用します。
    OASIS Kerberos Token Profile v1.1 仕様にはその他のトークン値タイプが定義されています。 トークン値タイプをローカル名として指定します。 Kerberos v5 トークンの値タイプ URI を指定する必要はありません。
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ4120
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ4120
  10. メッセージ保護にセキュア会話を使用する場合は、次の情報を指定する必要があります。
    通知 説明
    EncryptionAlgorithm これにより、鍵サイズが決定されます。
    cLabel 派生鍵の作成時に使用されるクライアント・ラベル。
    sLabel 派生鍵の作成時に使用されるサーバー・ラベル。
  11. コンポーネントを wssConsumingContext オブジェクトに組み込みます。
  12. wssConsumingContext.process() メソッドを呼び出します。

タスクの結果

WSS API を使用してトークン・コンシューマーを構成しました。

次のタスク

トークン生成プログラムの構成をまだ完了していない場合は、 同様の構成を指定してください。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configtokenconjaxws
ファイル名:twbs_configtokenconjaxws.html