メッセージの認証性を保護するための、WSS API によるジェネレーター・トークンの添付

トークン生成プログラムを指定すると、ジェネレーター側ではこの情報を使用して セキュリティー・トークンが生成されます。

始める前に

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

制約事項: com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent インターフェースは、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. wssGenerationContext インスタンスを生成します。

    WSSGenerationContext インターフェースは、署名および暗号化情報、セキュリティー・トークン、 タイム・スタンプなどの Web Services Security (WS-Security) を生成するためのコンポーネントを保管します。 generate() メソッドが呼び出されると、これらのコンポーネントのすべてが生成されます。

  3. ジェネレーター側のコンポーネント (WSSSignature オブジェクト、WSSEncryption オブジェクトなど) を作成します。
  4. JAAS ログイン構成の名前を指定することにより、JAAS 構成を指定します。 Java Authentication and Authorization Service (JAAS) 構成は、 JAAS 構成の名前を指定します。 JAAS 構成は、コンシューマー・サイドでトークンがログインする方法を指定します。 事前定義システムまたはアプリケーション・ログイン構成は除去しないでください。 ただし、これらの構成内では、モジュール・クラス名の追加、 および WebSphere Application Server が各モジュールをロードする順序の指定を行うことができます。
  5. トークン生成プログラムのクラス名を指定します。 トークン生成プログラムのクラス名は、 SecurityToken の生成に必要な情報を指定します。 メッセージの認証性には、デフォルトでユーザー名トークン、X.509 トークン、 および LTPA トークンが使用されます。
  6. コールバック・ハンドラーのクラス名を指定することによりコールバック・ハンドラーの設定を指定し、 コールバック・ハンドラーの鍵も指定します。 このクラス名は、セキュリティー・トークン・フレームワークのプラグインに使用される コールバック・ハンドラー実装クラスの名前です。

    このコールバック・ハンドラー実装は、必要なセキュリティー・トークンを取得し、 それをトークン生成プログラムに渡します。 トークン生成プログラムは、SOAP メッセージ内の Web Services Security ヘッダーにセキュリティー・トークンを挿入します。また、トークン生成プログラムは、プラグ可能なセキュリティー・トークン・フレームワークのプラグイン・ポイントです。 サービス・プロバイダーは 独自の実装を提供できますが、この実装では、WSSGenerationContext インターフェースを 使用する必要があります。

    WebSphere Application Server は、 ジェネレーター側に以下のデフォルトのコールバック・ハンドラー実装を 提供します。
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    このクラスは、名前と値のペアを Web Services Security (WS-Security) 構成 XMI ファイルの エレメントに処理するためのコールバックです。
    com.ibm.websphere.wssecurity.callbackhandler.UNTGUIPromptCallbackHandler
    このクラスは、ジェネレーター側のユーザー名トークン用の (GUI プロンプトによる) コールバック・ハンドラーです。このインスタンスは WSSGenerationContext オブジェクトを設定して ユーザー名トークンを生成するために使用されます。
    com.ibm.websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler
    このクラスは、ジェネレーター側のユーザー名トークン用の コールバック・ハンドラーです。このインスタンスは、WSSGenerationContext オブジェクトに組み込んで ユーザー名トークンを添付するために使用されます。この実装は、 Java Platform, Enterprise Edition (Java EE) アプリケーション・クライアントに対してのみ使用してください。
    com.ibm.websphere.wssecurity.callbackhandler.X509GenerateCallbackHandler
    このクラスは、ジェネレーター側でバイナリー・セキュリティー・トークンとして SOAP メッセージ内の Web Services Security ヘッダーに挿入される X.509 証明書を生成するために使用される、コールバック・ハンドラーです。このインスタンスは、 WSSSignature オブジェクトと WSSEncryption オブジェクトを生成し、そのオブジェクトを WSSGenerationContext オブジェクトに設定して、X.509 バイナリー・セキュリティー・トークンを生成するために、使用されます。 このコールバック・ハンドラーには、鍵ストアおよび鍵定義が必要です。この実装を 使用する場合、ジェネレーター側で鍵ストア・パスワード、パス、およびタイプを 提供する必要があります。
    com.ibm.websphere.wssecurity.callbackhandler.LTPAGenerateCallbackHandler
    このクラスは、ジェネレーター側の Lightweight Third Party Authentication (LTPA) トークン用のコールバック・ハンドラーです。このインスタンスは、WSSSignature オブジェクトおよび WSSEncryption オブジェクトを生成して 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 トークン用のコールバック・ハンドラーです。 このインスタンスは、WSSGenerationContext オブジェクトを設定して Kerberos v5 AP-REQ を バイナリー・セキュリティー・トークンとして生成するために使用されます。 また、このインスタンスは、WSSSignature および WSSEncryption オブジェクトを生成して SOAP メッセージのシグニチャーおよび暗号化で Kerberos セッション鍵または派生鍵を使用するためにも使用されます。
  7. X.509 トークンが指定されている場合は、その他のトークン情報も 指定されています。
    表 1. X.509 トークン用情報. 署名および暗号化のために X.509 トークンを使用します。
    トークン情報 説明
    storeRef 鍵ストアの参照名。
    storePath 必要に応じて鍵ストアがロードされる 鍵ストア・ファイルのパス。パス名に ${USER_INSTALL_ROOT} を使用することをお勧めします。 この変数は、ご使用のマシンの WebSphere Application Server パスに展開されます。 このパスは、X.509 トークンのコールバック・ハンドラー実装を 使用する場合には必須です。
    storePassword 鍵ストアの保全性検査に使用されるパスワード、 または鍵ストアのアンロックや鍵ストア・ファイルへのアクセスに使用される 鍵ストア・パスワード。鍵ストアとその構成は、 WebSphere Application Server が提供する一部のデフォルト・コールバック・ハンドラー実装で 使用されます。
    storeType 鍵ロケーターで使用される鍵ストアの 鍵ストア・タイプ。この選択項目で、鍵ストア・ファイルが使用するフォーマットを 指定します。選択できる値は次のとおりです。
    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 のようにします。
    certStores 証明書ストアのリスト。コレクション証明書ストアには、信頼されない中間証明書のリストおよび証明書失効リスト (CRL) が含まれます。 このステップでは、ジェネレーター・バインディングのためのコレクション証明書ストア および証明書失効リストを構成します。
    identityAssertion ID アサーションを使用するかどうかを指定します。ID アサーションが 定義されている場合はこの項目を選択します。このオプションは、初期送信側の ID のみが必要で、SOAP メッセージ内の Web Services Security ヘッダーに挿入されることを示します。 X.509 トークン生成プログラムの場合、 アプリケーション・サーバーはオリジナルの署名者認証のみを送信します。
    requestorCertificate 要求側の証明書を使用するかどうかを 指定します。

    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. IdentityAssertion オプションを使用するかどうか。 ID アサーションが 定義されている場合は、このオプションを選択します。このオプションは、初期送信側の ID のみが必要で、SOAP メッセージ内の Web Services Security ヘッダーに挿入されることを示します。 例えば、WebSphere Application Server は、 ユーザー名トークン生成プログラムの最初の呼び出し元のユーザー名のみを 送信します。
    2. RunAsSubject ID オプションを使用するかどうか。 ID アサーションが定義されていて、 ダウンストリーム呼び出しの ID アサーションに対して、初期呼び出し元 ID の代わりに Run As ID を使用する場合は、 このオプションを使用します。このオプションは、ユーザー名トークンをトークン生成プログラムとして 構成した場合にのみ有効です。
    3. sendRealm を使用するかどうか。
    4. nonce を指定するかどうか。

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

    5. タイム・スタンプのキーワードを指定します。 このオプションは、 ユーザー名トークンのタイム・スタンプを検証するかどうかを示します。タイム・スタンプは、 取り込まれたトークンのタイプがユーザー名トークンである場合に限り有効です。
    6. 鍵と値のペアを含むマップを指定します。 例えば、 値のタイプ名と値のタイプの 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 トークンが指定されている場合は、 以下のトークン情報を指定できます。
    トークン情報 説明 デフォルト値
    name Kerberos クライアントのプリンシパル名。  
    password Kerberos クライアントのパスワード。  
    realm Kerberos クライアントに関連付けられる Kerberos レルム。 Kerberos 構成ファイルのデフォルト・レルム名。

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

    targetService ターゲット Web サービスに関連付けられる Kerberos サービス名。  
    targetHost Kerberos サービス名に関連付けられる Kerberos レルム名。  
    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
    targetRealm Kerberos サービス名に関連付けられる Kerberos レルム名。 Kerberos 構成ファイルのデフォルト・レルム名。
    prompt ログイン・プロンプトを使用可能に設定するためのブール値。 false
    supportTokenRequireSHA1 Kerberos トークンがサポート・トークンとして使用される場合に、後続の要求メッセージで使用される SHA1 鍵を必要とするブール値。 false

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

    alwaysAPREQ クライアントが要求メッセージで常に Kerberos AP_REQ トークンを送信することを示すためのブール値。 false

    後続のメッセージでは、代わりに、SHA1 鍵が使用されます。 true に設定されている場合、常に Kerberos AP_REQ トークンが使用されます。

    requireDKT メッセージ保護用の派生鍵を必要とするブール値。 false
    clabel 派生鍵のクライアント・ラベル。 WS-SecureConversation

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

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

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

    keylen 派生鍵の長さ。 16

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

    noncelen nonce の長さ。 16

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

    encComponent WSSEncryption のインスタンス。 暗号化コンポーネントまたはシグニチャー・コンポーネント用に、encComponent および sigComponent にヌルを設定して、 最初にこれを初期化します。 初期化されたコンポーネントは、2 番目のコンポーネントのコールバック・ハンドラー・コンストラクターでのみ使用します。
    sigComponent WSSSignature のインスタンス。 暗号化コンポーネントまたはシグニチャー・コンポーネント用に、encComponent および sigComponent にヌルを設定して、 最初にこれを初期化します。 初期化されたコンポーネントは、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. メッセージ保護にセキュアな会話が使用される場合、以下の情報を指定する必要があります。
    通知 説明
    bootstrapWSSGenerationContext RequestSecurityToken (RST) トークンを保護するために使用するブートストラップ構成。
    bootstrapWSSConmingContext 保護された RequestSecurityTokenResponse (RSTR) をコンシュームするために使用するブートストラップ構成。
    ENDPOINT_URL サービス・エンドポイント URL。
    EncryptionAlgorithm これにより、鍵サイズが決定されます。
    cLabel 派生鍵の作成時に使用されるクライアント・ラベル。
    sLabel 派生鍵の作成時に使用されるサーバー・ラベル。
  11. コンポーネントを wssGenerationContext オブジェクトに設定します。
  12. wssGenerationContext.process() メソッドを呼び出します。

タスクの結果

Web Services Security API (WSS API) プロセスを使用して、 トークン生成プログラムを構成することができます。

次のタスク

次に、同様のトークン・コンシューマー構成を指定する必要があります。

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



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