WSS API を使用したコンシューマー・セキュリティー・トークンの構成

ポリシー・セットを使用しなくても、Web Services Security API を使用することで SOAP メッセージをセキュアにすることができます。 コンシューマー側にトークンを構成するには、 Web Services Security API (WSS API) を使用します。コンシューマー・セキュリティー・トークンは、 com.ibm.websphere.wssecurity.wssapi.token インターフェース・パッケージの一部です。

始める前に

WebSphere® Application Server の プラグ可能トークン・フレームワークが設計変更され、 WSS API の同一フレームワークを再利用できるようなりました。セキュリティー・トークンの作成および妥当性検査の実装と同じ実装を、Web Services Security ランタイムと WSS API アプリケーション・コードの両方に使用できます。再設計されたフレームワークにより、SPI プログラミング・モデルもシンプルになり、 セキュリティー・トークン・タイプの追加が容易になります。

WSS API を使用することも、管理コンソールを使用してトークンを構成することもできます。 トークンを構成するには、必要に合わせてジェネレーター・トークンを構成する、トークン・タスクが完了している必要があります。

このタスクについて

ジェネレーター側では、JAAS CallbackHandler と JAAS LoginModule が セキュリティー・トークンを作成する責務を担います。 トークンは JAAS LoginModule を使用して作成され、JAAS CallbackHandler を使用して認証データを受け渡しされます。 次に、JAAS LoginModule は UsernameToken などの securityToken オブジェクトを作成して、それを Web Services Security ランタイムに受け渡します。

コンシューマー側では、 XML フォーマットが妥当性検査または認証用 JAAS LoginModule に受け渡されます。 次に、JAAS CallbackHandler を使用して、認証データが Web Services Security ランタイムから LoginModule に受け渡されます。トークンが認証され、セキュリティー・トークン・オブジェクトが作成された後、トークンは Web Services Security ランタイムに受け渡されます。

コンシューマー・トークンの妥当性検査に WSS API を使用すると、 ある決まったデフォルトの動作が行われます。WSS API を使用する一番簡単な方法は、 デフォルトの JAAS ログイン・モジュールとコールバック・ハンドラーを使用することです。 例では、それらのデフォルトを使用しているので、JAAS ログイン・モジュール名を指定しません。

WSS API を使用する一番簡単な方法は、デフォルトの動作を使用することです (サンプル・コードを参照)。 WSS API は、トークン・タイプ、トークン値、および JAAS 構成名のデフォルトを提供します。 デフォルト・トークンの動作は、以下のとおりです。

表 1. デフォルト・トークンの動作. いくつかのトークン特性は、デフォルトで構成されます。
コンシューマー・トークンの決定 デフォルトの動作
使用するトークン・タイプ

トークン・タイプで、メッセージの署名および妥当性検査に使用するトークンのタイプを指定します。デフォルトの トークン・タイプは X.509 トークンです。

WebSphere Application Server は、 以下の事前構成済みコンシューマー・トークン・タイプを提供します。

  • セキュリティー・コンテキスト・トークン
  • 派生鍵トークン
  • X509 トークン

必要に応じて、カスタム・トークン・タイプを作成することもできます。

指定する JAAS ログイン構成名

JAAS ログイン構成名で、使用する JAAS ログイン構成名を指定します。

使用する構成タイプ JAAS ログイン・モジュールの構成タイプ。 事前定義コンシューマー構成タイプのみが、コンシューマー・トークン・タイプとして使用できます。

SecurityToken クラス (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) は汎用トークン・クラスであり、識別名、XML フォーマット、および暗号鍵を取得するための方式が含まれているセキュリティー・トークンを表します。 SecurityToken クラスを使用して、シグニチャーと暗号化の両方を SOAP メッセージに適用することができます。 ただし、両方を適用するには、シグニチャー用と暗号化用にそれぞれ 1 つずつ、合計 2 つの SecurityToken オブジェクトが必要です。

以下のトークン・タイプは汎用セキュリティー・トークン・クラスのサブクラスです。

表 2. SecurityToken のサブクラス. これらのサブクラスを使用して、セキュリティー・トークンを表します。
トークン・タイプ JAAS ログイン構成名
セキュリティー・コンテキスト・トークン system.wss.consume.sct
派生鍵トークン system.wss.consume.dkt

以下のトークン・タイプはバイナリー・セキュリティー・トークン・クラスのサブクラスです。

表 3. BinarySecurityToken に対するサブクラス. これらのサブクラスを使用して、バイナリー・セキュリティー・トークンを表します。
トークン・タイプ JAAS ログイン構成名
X.509 トークン system.wss.consume.x509
X.509 PKI Path トークン system.wss.consume.pkiPath
X.509 PKCS7 トークン system.wss.consume.pkcs7
注:
  • JAAS ログイン・トークン・コンシューマーの構成名ごとに、 それぞれのトークン生成プログラムの構成名があります。 例えば、X509Token の場合、そのトークン生成プログラムの構成名は system.wss.generate.x509 です。
  • LTPA および LTPA の伝搬トークンは、サーバー・ベースのクライアントとして実行されている要求側のみが使用できます。 LTPA および LTPA の伝搬トークンは、 Java™ SE 6 または Java EE アプリケーション・クライアントではサポートされません。

コンシューマー側で SOAP メッセージに対して X509Token を妥当性検査するには、<X509Token> エレメントが <wsse:Security> エレメント内に存在する必要があります。

手順

  1. securityToken パッケージ com.ibm.websphere.wssecurity.wssapi.token を妥当性検査するには、 最初に、アプリケーション・サーバーがインストールされていることを確認します。
  2. デフォルト値を使用する場合、トークンを Web Services Security トークン・コンシューマー・プロセス用に構成します。 各トークン・タイプのプロセスは、以下のトークン・コンシューマー・プロセスに類似しています。
    1. WSSFactory.getInstance() を使用して WSS API 実装インスタンスを取得します。
    2. WSSFactory インスタンスから WSSConsumingContext インスタンスを作成します。 WSSConsumingContext は、常に JAX-WS クライアント・アプリケーションで呼び出す必要があるので注意してください。
    3. セキュリティー・トークンの妥当性検査のために必要な情報を指定して、JAAS CallbackHandler を作成します。 トークン・クラス情報を調べ、どのパラメーターが必須でどのパラメーターがオプションであるのかを確認します。 例えば、X.509 トークンの場合、 以下のように構成できます。
      表 4. X.509 トークン・オプション. X.509 構成オプションを使用して、トークンの動作を制御します。
      トークン情報 説明
      keyStoreRef 暗号カードに保管されている鍵ストアの参照名を示します。 これは、カードをハードウェアにセットするときに指定できます。
      keyStorePath 鍵ストア・ファイルのパスを示します。keyStoreRef が設定されている場合、 keyStorePath を指定することは不要です。
      keyStorePassword 鍵ストア・ファイルのパスワードを示します。
      keyStoreType 鍵ストア・ファイルのタイプを示します。
      alias 鍵の別名を示します。
      keyPassword 鍵のパスワードを示します。
      keyName 鍵の対象名を示します。
    4. コールバック・ハンドラーを WSSDecryption、WSSVerification、または WSSConsumingContext に設定します。
    5. コールバック・ハンドラーを WSSDecryption または WSSVerification に設定する場合は、 そのいずれかを WSSConsumingContext に追加します
    6. WSSConsumingContext.process() を呼び出します。
  3. デフォルト値以外を使用する場合、トークンを Web Services Security トークン・コンシューマー・プロセス用に構成します。 各トークン・タイプのプロセスは、以下のトークン・コンシューマー・プロセスに類似しています。
    1. デフォルトの JAAS ログイン・モジュールおよびコールバック・ハンドラーを使用しない場合は、 あらかじめ、カスタマイズしたものを準備し、管理コンソールを使用して JAAS ログイン構成の名前を登録する必要があります。
    2. WSSFactory.getInstance() を使用して WSS API 実装インスタンスを取得します。
    3. WSSFactory インスタンスから WSSConsumingContext インスタンスを作成します。 WSSConsumingContext は、常に JAX-WS クライアント・アプリケーションで呼び出す必要があるので注意してください。
    4. セキュリティー・トークンの妥当性検査のために必要な情報を指定して、コールバック・ハンドラーを作成します。 トークン・クラス情報を調べ、どのパラメーターが必須でどのパラメーターがオプションであるのかを確認します。 例えば、X.509 トークンの場合、 以下のように構成できます。
      表 5. X.509 トークン・オプション. X.509 構成オプションを使用して、トークンの動作を制御します。
      トークン情報 説明
      keyStoreRef 暗号カードに保管されている鍵ストアの参照名を示します。 これは、カードをハードウェアにセットするときに指定できます。
      keyStorePath 鍵ストア・ファイルのパスを示します。keyStoreRef が設定されている場合、 keyStorePath を指定することは不要です。
      keyStorePassword 鍵ストア・ファイルのパスワードを示します。
      keyStoreType 鍵ストア・ファイルのタイプを示します。
      alias 鍵の別名を示します。
      keyPassword 鍵のパスワードを示します。
      keyName 鍵の対象名を示します。
    5. JAAS 構成名とコールバック・ハンドラーを WSSDecryption、 WSSVerification、または WSSConsumingContext に設定します。
    6. JAAS 構成名およびコールバック・ハンドラーを WSSDecryption または WSSVerification に設定する場合は、そのいずれかを WSSConsumingContext に追加します。
    7. WSSConsumingContext.process() を呼び出します。

タスクの結果

エラー条件がある場合は、WSSException が発生します。正常な場合、 WSSConsumingContext.process() が呼び出され、コンシューマー側のセキュリティー・トークンが妥当性検査 (認証) されます。

以下のサンプル・コードは、 デフォルトの JAAS ログイン・モジュールおよびコールバック・ハンドラーを使用した暗号化解除用の WSS API コード例です。

// Get the message context
   Object msgcontext = getMessageContext();

// Generate the WSSFactory instance (step: a)
   WSSFactory factory = WSSFactory.getInstance();

// Generate the WSSConsumingContext instance (step: b)
   WSSConsumingContext gencont = factory.newWSSConsumingContext();

// Generate the callback handler (step: c)
   X509ConsumeCallbackHandler callbackHandler = new
        X509ConsumeCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(),
                                   "alice",
                                   "keypass".toCharArray(),
                                   "CN=Alice, O=IBM, C=US");

// Generate the WSSDecryption instance (step: d)
   WSSDecryption dec = factory.newWSSDecryption(X509Token.class, 
                                                callbackHandler);


// Add WSSDecryption to WSSConsumingContext (step: e)
   concont.add(dec);

// Validate the WS-Security header (step: f)
concont.process(msgcontext);

次のタスク

トークン・タイプごとに、WSS API または管理コンソールを使用してトークンを構成します。 次に、まだ指定していない場合は、類似のジェネレーター・トークンを指定します。

ジェネレーター・トークンとコンシューマー・トークンの両方を構成している場合は、 WSS API を使用して応答コンシューマーの SOAP メッセージを引き続きセキュアにするか、または管理コンソールを使用してトークンを構成します。

ジェネレーター・トークンとコンシューマー・トークンの両方を構成している場合は、 必要に応じて、シグニチャーを検査するか、またはメッセージを暗号化解除するかして、SOAP メッセージを引き続きセキュアにします。 SOAP メッセージをセキュアにするには、WSS API を使用することも、管理コンソールを使用することもできます。


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



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