ポリシー・セットを使用しなくても、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 Service Security ランタイムに受け渡します。
コンシューマー側では、 XML フォーマットが妥当性検査または認証用 JAAS LoginModule に受け渡されます。 次に、JAAS CallbackHandler を使用して、認証データが Web Service Security ランタイムから LoginModule へ受け渡されます。トークンが認証された後、 セキュリティー・トークン・オブジェクトが作成され、そのトークンが Web Service Security ランタイムに受け渡されます。
ジェネレーター・トークンの作成に WSS API を使用すると、 ある決まったデフォルトの動作が行われます。 WSS API を使用する一番簡単な方法は、デフォルトの動作を使用することです (サンプル・コードを参照)。 WSS API は、トークン・タイプ、トークン値、および JAAS 構成名のデフォルト値を提供します。 デフォルト・トークンの動作は、以下のとおりです。
ジェネレーター・トークンの決定 | デフォルトの動作 |
---|---|
使用するトークン・タイプ | トークン・タイプで、メッセージの保全性、メッセージの機密性、またはメッセージの認証性に使用するトークンのタイプを指定します。 WebSphere Application Server は、メッセージの保全性およびメッセージの機密性に関して以下の事前定義されたジェネレーター・トークン・タイプを提供します。
WebSphere Application Server は、メッセージの認証性に関して以下の事前定義されたジェネレーター・トークン・タイプを提供します。
必要に応じて、カスタム・トークン・タイプを作成することもできます。 |
指定する JAAS ログイン構成名 | JAAS ログイン構成名で、使用する JAAS ログイン構成名を指定します。 |
使用する構成タイプ | JAAS ログイン・モジュールは構成タイプを指定します。 ジェネレーター・トークン・タイプには、事前定義されたジェネレーター構成タイプのみを使用できます。 |
SecurityToken クラス (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) は、 汎用トークン・クラスであり、識別名、XML フォーマット、および暗号鍵を取得するための方式が含まれているセキュリティー・トークンを表します。 SecurityToken クラスを使用して、シグニチャーと暗号化の両方を SOAP メッセージに適用することができます。 ただし、両方を適用するには、シグニチャー用と暗号化用にそれぞれ 1 つずつ、合計 2 つの SecurityToken オブジェクトが必要です。
以下のトークン・タイプは汎用セキュリティー・トークン・クラスのサブクラスです。
トークン・タイプ | JAAS ログイン構成名 |
---|---|
ユーザー名トークン | system.wss.generate.unt |
セキュリティー・コンテキスト・トークン | system.wss.generate.sct |
派生鍵トークン | system.wss.generate.dkt |
以下のトークン・タイプはバイナリー・セキュリティー・トークン・クラスのサブクラスです。
トークン・タイプ | JAAS ログイン構成名 |
---|---|
LTPA トークン | system.wss.generate.ltpa |
LTPA 伝搬トークン | system.wss.generate.ltpaProp |
X.509 トークン | system.wss.generate.x509 |
X.509 PKI Path トークン | system.wss.generate.pkiPath |
X.509 PKCS7 トークン | system.wss.generate.pkcs7 |
注:
以下のサンプル・コードは、WSS API プロセスが Username セキュリティー・トークンを作成し、 Username トークンを SOAP メッセージに添付し、 Username トークンをジェネレーター・バインディングに構成する方法を示しています。
// get the message context Object msgcontext = getMessageContext(); // generate WSSFactory instance WSSFactory factory = WSSFactory.getInstance(); // generate WSSGenerationContext instance WSSGenerationContext gencont = factory.newWSSGenerationContext(); // generate callback handler UNTGenerateCallbackHandler untCallbackHandler = new UNTGenerateCallbackHandler("Chris", "sirhC"); // generate the username token SecurityToken unt = factory.newSecurityToken(UsernameToken.class, untCallbackHandler); // add the SecurityToken to the WSSGenerationContext gencont.add(unt); // generate the WS-Security header gencont.process(msgcontext);
トークン・タイプごとに、WSS API または管理コンソールを使用してトークンを構成します。 次に、まだ実行していない場合は、類似のコンシューマー・トークンを指定します。
ジェネレーター・トークンとコンシューマー・トークンの両方を構成している場合は、 必要に応じて、SOAP メッセージを署名するかメッセージを暗号化するかして、SOAP メッセージを引き続きセキュアにします。 SOAP メッセージをセキュアにするには、WSS API を使用することも、管理コンソールを使用することもできます。