クライアント・サイドの応答コンシューマー (受信側) バインディングの署名情報を
構成することができます。署名情報は、SOAP 本体、
タイム・スタンプ情報、およびユーザー名トークンなど、メッセージの各パーツの
署名および検証に使用されます。
始める前に
WebSphere® Application
Server は、既存のアルゴリズム (RSA、HMAC、
および SHA1 など) を使用した XML デジタル署名を使用します。XML Signature は、鍵情報を記述するための多くのメソッドを定義し、
新規メソッドの定義を使用可能にします。以下のステップを実行する前に、XML デジタル署名に関する情報に
目を通して、デジタル・コンテンツに対するデジタル署名の署名と検証について
十分理解しておいてください。
XML Signature を SOAP メッセージに組み込むことにより、
メッセージの保全性と認証が実現されます。機密性が暗号化を意味するのに対して、
保全性 はデジタル署名を意味します。保全性は、データがインターネットに伝送中に、そのデータが変更されるリスクを低減させます。
シグニチャーと SOAP メッセージの署名済みパーツを検証するためには、
その前に以下のタスクを完了している必要があります。
- シグニチャーの構成。
- 署名済みパーツの追加 (必要な場合)。
- シグニチャーおよび署名済みパーツ方式の選択。
このタスクについて
バインディング・ファイルの応答コンシューマー (クライアント・サイド) セクションで、
署名検査情報を構成するには、Web Services Security API (WSS API) を
使用します。要求シグニチャー検査用にクライアントを構成し、検証するデジタル署名済み
メッセージ・パーツを指定するには、WSSVerification API または WSSVerifyPart API を
使用します。
WebSphere Application Server は、コンシューマー側の
署名情報を使用して、メッセージ・パーツ (本体、タイム・スタンプ、
ユーザー名トークンなど) が署名されていることを確認することによって、
受信した SOAP メッセージの保全性を検証します。
クライアント・サイドでは、
WSS API を使用するか、管理コンソールからポリシー・セットを構成することで、
署名するメッセージ・パーツを指定し、鍵情報参照が参照する鍵情報を
構成します。シグニチャーと署名済みパーツを検証するには、
WSSVerification API および WSSVerifyPart API を使用します。
WebSphere Application Server には、バインディングのデフォルト値が用意されています。しかし、管理者は実稼働環境に合わせてデフォルトを変更する必要があります。
WSSVerification API および WSSVerifyPart API は、
以下のステップを実行して、クライアントを応答コンシューマー署名用に構成するときに確認する
デジタル署名済みメッセージ・パーツを指定します。
手順
- WSSVerification API は、SOAP メッセージの必要な検証パーツを
追加します。
このパーツ参照は、デジタル署名されるメッセージ・パーツを参照します。
パーツ属性は、<PartReference> エレメントがシグニチャーに対して指定されている場合、
<Integrity> エレメントの名前を参照します。
<SigningInfo> エレメント内で、複数の <PartReference> エレメントを指定することができます。
<PartReference> エレメントがシグニチャーに対して指定されている場合、このエレメントには <DigestTransform> および
<Transform> という 2 つの子エレメントがあります。
WSSVerification API は、以下のパーツを検証パーツとして構成します。
検証パーツ |
説明 |
セキュリティー・トークン |
シグニチャー検査に使用されるセキュリティー・トークンの情報を
追加します。 |
SOAP ヘッダーおよび QName (ターゲットとして) |
SOAP ヘッダー (QName で指定) を検証パーツとして
追加します。 |
WSS API では、キーワードまたは XPath 式を使用することで、
検証するメッセージ・パーツを指定できます。WebSphere
Application Server で使用できるキーワードは次のとおりです。キーワード |
参照 |
WSSVerification.ADDRESSING_HEADERS |
Web Services Addressing (WS-Addressing) のヘッダー。 |
WSSVerification.BODY |
SOAP メッセージ本体。これは、メッセージのユーザー・データ部分です。 |
WSSVerification.TIMESTAMP |
作成および有効期限のタイム・スタンプ情報。 |
- WSSVerification API は、SOAP メッセージに必要なヘッダーを追加します。 このヘッダー (QName で指定) は、検証ヘッダーとして必須です。
- WSSVerification API はセキュリティー・トークンを追加します。 シグニチャー検証に使用されるセキュリティー・トークンの情報を追加します。
例えば次のような情報です。
- セキュリティー・トークンのクラス
- コールバック・ハンドラー
- JAAS ログイン構成の名前
- WSSVerification API は、シグニチャー方式のアルゴリズムを追加します。 シグニチャー方式は、バインディング・ファイル内の正規化された <SignedInfo> エレメントを
<SignatureValue> エレメントに変換するために使用されるアルゴリズムです。
コンシューマー (応答コンシューマー構成) 用に指定されたアルゴリズムは、
要求生成プログラム構成用に指定されたアルゴリズムと
一致している必要があります。
WebSphere Application Server は、
以下の事前構成済みシグニチャー・アルゴリズムをサポートしています。
WebSphere Application Server は、DSA-SHA1 用のアルゴリズム (http://www.w3.org/2000/09/xmldsig#dsa-sha1) を
サポートしていません。Basic Security Profile (BSP) に準拠する場合は、
DSA-SHA1 アルゴリズムは使用できません。
- WSSVerification API は正規化方式を追加します。 正規化方式アルゴリズムは、デジタル署名操作の一部として取り込まれる前に、
<SignedInfo> エレメントを正規化するために使用されます。
ジェネレーター用にユーザーが指定する正規化アルゴリズムは、
コンシューマー用のアルゴリズムと一致している必要があります。
WebSphere Application Server は、
以下の事前構成済み正規化アルゴリズムをサポートしています。
- WSSVerification API は、シグニチャーの確認が必要かどうかを
検証します。 OASIS Web Services Security (WS-Security) バージョン
1.1 仕様は、シグニチャー確認の使用を定義しています。WS-Security バージョン 1.0 を
使用している場合は、この機能は使用できません。
シグニチャー確認の値は
保管されて、受信メッセージが戻された後のシグニチャー確認の検証に
使用されます。このメソッドが呼び出されるのは、
応答メッセージが SOAP メッセージにシグニチャー確認を添付すると
予想される場合です。
- WSSVerifyPart API はダイジェスト方式を追加します。 署名情報の各パーツ参照について、この API はダイジェスト方式アルゴリズムと
変換アルゴリズムの両方を指定します。
WebSphere Application
Server は、
次の事前構成済みダイジェスト・アルゴリズムをサポートしています。
- WSSVerifyPart.SHA1: http://www.w3.org/2000/09/xmldsig#sha1
- WSSVerifyPart.SHA256: http://www.w3.org/2001/04/xmlenc#sha256
- WSSVerifyPart.SHA512: http://www.w3.org/2001/04/xmlenc#sha512
- WSSVerifyPart API は変換方式を追加します。 署名情報の各パーツ参照について、この API はダイジェスト方式アルゴリズムと
変換アルゴリズムの両方を指定します。
WebSphere Application Server は、
以下の事前構成済み変換アルゴリズムをサポートしています。
- WSSVerifyPart.TRANSFORM_EXC_C14N (デフォルト値): http://www.w3.org/2001/10/xml-exc-c14n#
- WSSVerifyPart.TRANSFORM_XPATH2_FILTER: http://www.w3.org/2002/06/xmldsig-filter2
- WSSVerifyPart.TRANSFORM_STRT10: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
- WSSVerifyPart.TRANSFORM_ENVELOPED_SIGNATURE: http://www.w3.org/2000/09/xmldsig#enveloped-signature
WSS API の場合、WebSphere Application Server は以下のアルゴリズムをサポートしません。
- http://www.w3.org/2002/07/decrypt#XML
- http://www.w3.org/TR/1999/REC-xpath-19991116
コンシューマー用の変換アルゴリズムは、生成プログラム用の変換アルゴリズムと一致している必要があります。
タスクの結果
これで、バインディング・ファイルのクライアント・サイドの応答コンシューマー・セクションの
署名情報を構成するためのステップが完了しました。
例
次の例は、シグニチャーを検証し、X.509 トークン・タイプを
セキュリティー・トークンとして検証するための WSS API サンプル・コードです。
WSSFactory factory = WSSFactory.getInstance();
WSSConsumingContext concont = factory.newWSSConsumingContext();
// Generate the X.509 Callback Handler on the consumer side
X509ConsumeCallbackHandler callbackhandler = generateCallbackHandler();
WSSVerification ver = factory.newWSSVerification(X509Token.class,
callbackhandler);
concont.add(ver);
次のタスク
ジェネレーター・バインディングに対する署名情報がまだ構成されていない場合には、
同様の構成を指定してください。
構成済みであれば、次は、
暗号化情報および暗号化解除情報を構成するか、コンシューマー・トークンおよびジェネレーター・トークンを
構成します。