WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化
             New or updated topic for this feature pack

WSSSignPart API を使用した署名済みパーツの追加

構成用ポリシー・セットを使用しなくても、Web Services Security API (WSS API) を使用することで SOAP メッセージをセキュアにすることができます。 署名するパーツを 要求ジェネレーター (クライアント・サイド) バインディング用に構成するには、 WSSSignPart API を使用してメッセージの保全性を保護し、ダイジェスト・アルゴリズム方式と 変換アルゴリズム方式を構成します。WSSSignPart API は、 com.ibm.websphere.wssecurity.wssapi.signature パッケージに含まれています。

始める前に

署名情報を構成するには、WSS API を使用するか、管理コンソールから ポリシー・セットを構成します。署名情報を使用して SOAP メッセージを保護するには、 以下のタスクのいずれかを実行する必要があります。

このタスクについて

WebSphere Application Server は、デフォルトのジェネレーターの 署名情報を使用してメッセージ・パーツに署名し、既存のダイジェストおよび 変換アルゴリズム (SHA1、TRANSFORM_EXC_C14N など) で XML デジタル・シグニチャーを使用します。

署名情報は、生成されるメッセージに適用する保全性制約を 指定します。署名済みパーツは、メッセージの保全性確保のために 使用されます。メッセージ保全性の保護を強化する署名済みパーツを指定できます。

以下の表に、デジタル・シグニチャー・セキュリティー制約 (保全性) が定義される場合に 必須の署名済みパーツを示します。

表 1. 署名済みパーツ 情報
署名済みパーツ 説明
keyword キーワードを使用して署名済みパーツを追加します。WebSphere Application Server は 署名済みパーツ用の以下のキーワードをサポートします。
  • BODY
  • ADDRESSING_HEADERS
  • TIMESTAMP
WS-Addressing ヘッダーは暗号化されませんが、これに署名することはできます。
xpath XPath 式によって、必要な署名済みパーツを追加します。
header ヘッダー (QName で指定) を署名済みパーツとして追加します。
timestamp WSSTimestamp オブジェクトを署名済みパーツとして追加します。タイム・スタンプ情報を 指定すると、メッセージの生成日時とその有効期限が 指定されます。

ジェネレーター側の要求のメッセージ保護には、 さまざまなメッセージ・パーツを指定できます。WSSSignPart では、変換アルゴリズムの追加、ダイジェスト方式の設定、 ターゲットとしてのオブジェクトの設定、エレメントおよび署名済みパーツ (SOAP 本体、 WS-Addressing ヘッダー、タイム・スタンプ情報など) の指定が可能です。

署名情報については、特定のデフォルトの動作が発生します。WSSSignPart API を 使用する最も簡単な方法は、デフォルトの動作を使用することです (コード例を 参照してください)。署名済みパーツのデフォルトの動作には以下のようなものがあります。

シグニチャーの決定項目 デフォルトの動作
署名する SOAP メッセージ・パーツ

WebSphere Application Server は、 署名してメッセージ保護に使用する以下の SOAP メッセージ・パーツをサポートしています。

  • WSSSignature.BODY
  • WSSSignature.ADDRESSING_HEADERS
  • WSSSignature.TIMESTAMP
使用するダイジェスト方式

ダイジェスト・アルゴリズム方式を設定します。 <DigestMethod> エレメント内で指定されるダイジェスト方式アルゴリズムは、 <SigningInfo> エレメントで使用されます。

WebSphere Application Server は、以下の事前構成ダイジェスト方式をサポートします。
  • WSSSignPart.SHA1 (the default value): http://www.w3.org/2000/09/xmldsig#sha1
  • WSSSignPart.SHA256: http://www.w3.org/2001/04/xmlenc#sha256
  • WSSSignPart.SHA512: http://www.w3.org/2001/04/xmlenc#sha512
使用する変換アルゴリズム 変換方式を追加します。変換アルゴリズムは、 <Transform> エレメント内で指定され、シグニチャーの変換アルゴリズムを 指定します。

WebSphere Application Server は、 以下の事前構成済み変換アルゴリズムをサポートします。

  • WSSSignPart.TRANSFORM_EXC_C14N (the default value): http://www.w3.org/2001/10/xml-exc-c14n#
  • WSSSignPart.TRANSFORM_XPATH2_FILTER: http://www.w3.org/2002/06/xmldsig-filter2

    この変換方式を使用すると、Basic Security Profile (BSP) への準拠が 保証されます。

  • WSSSignPart.TRANSFORM_STRT10: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
  • WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE: http://www.w3.org/2000/09/xmldsig#enveloped-signature

プロシージャー

  1. WSS API (WSSSignPart) で Web サービス・セキュリティーを使用可能にするには、 まず、WebSphere Application Server Feature Pack がインストールされていることを確認します。
  2. WSSSignPart API を使用してメッセージ・パーツに署名し、 SOAP メッセージでアルゴリズムを指定します。 署名済みパーツの WSS API プロセスは、 以下の手順のとおりです。
    1. WSSFactory.getInstance() を使用して WSS API 実装インスタンスを取得します。
    2. WSSFactory インスタンスから WSSGenerationContext インスタンスを 作成します。
    3. WSSFactory から SecurityToken を作成して、 署名用の鍵を構成します。
    4. SecurityToken を使用して、WSSFactory インスタンスから WSSSignature を 作成します。
    5. WSSFactory インスタンスから WSSSignPart を作成します。
    6. デフォルトが該当しない場合は、署名するパーツと、 ステップ g またはステップ h で指定したダイジェスト方式または変換方式を設定します。
    7. ダイジェスト方式を設定します (デフォルトが該当しない場合)。
    8. 変換方式を設定します (デフォルトが該当しない場合)。
    9. WSSSignPart を WSSSignature に追加します。 WSSSignPart を WSSSignature に設定した後は、WSSSignature で指定するデフォルトの署名対象パーツは 無視されます。
    10. WSSSignature を WSSGenerationContext に追加します。
    11. SOAPMessageContext を使用して WSSGenerationContext.process() を呼び出します。

結果

これで、バインディング・ファイルのジェネレーター・セクションの署名済みパーツを 構成するためのステップが完了しました。エラー条件がある場合は、WSSException が発生します。正常に完了した場合は WSSGenerationContext.process() が呼び出され、 SOAP メッセージに Web サービス・セキュリティーが適用されます。

次の例は、WSSSignPart API で定義されるすべてのメソッドを 使用したサンプル・コードです。

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

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

// Generate WSSGenerationContext instance  (step: b)
   WSSGenerationContext gencont = factory.newWSSGenerationContext();
		
// Generate callback handler
   X509GenerateCallbackHandler callbackHandler = new
      X509GenerateCallbackHandler(
                                  "",
                                  "dsig-sender.ks",
                                  "jks",
                                  "client".toCharArray(),
                                  "soaprequester",
                                  "client".toCharArray(),
                                  "CN=SOAPRequester, OU=TRL, O=IBM, 
                                      ST=Kanagawa, C=JP", 
                                  null);

// Generate the security token used to the signature  (step: c)
   SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);

// Generate WSSSignature instance (step: d)
   WSSSignature sig = factory.newWSSSignature(token);

// Set the part specified by WSSSignPart  (step: e)
   WSSSignPart sigPart = factory.newWSSSignPart();

// Set the part specified by WSSSignPart  (step: f)
   sigPart.setSignPart(WSSSignature.BODY);

// Set the digest method specified by WSSSignPart  (step: g)
   sigPart.setDigestMethod(WSSSignPart.SHA256);

// Set the transform method specified by WSSSignPart  (step: h)
   sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);

// Add the part specified by WSSSignPart  (step: i)
   sig.addSignPart(sigPart);

// Add the WSSSignature to the WSSGenerationContext  (step: j)
   gencont.add(sig);
		
// Generate the WS-Security header  (step: k)
gencont.process(msgcontext);
注: 署名には秘密鍵が使用されるため、 X509GenerationCallbackHandler には鍵パスワードが必要です。

次の作業

WSSVerifyPart API を使用するか、管理コンソールからポリシー・セットを構成して、 コンシューマー側で署名済みパーツを検証します。




関連タスク
WSSSignature API を使用したシグニチャー情報の構成
WSSVerifyPart API を使用した署名済みパーツの検証
ポリシー・セットを使用したメッセージ・パーツの署名と暗号化
WSS API を使用してメッセージの保全性を保護するための、 ジェネレーター署名情報の構成
関連資料
WSSSignPart API を使用した署名済みパーツ方式
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/twbs_confsignaturepartgen.html