クライアントの要求署名方式の構成
WSSSignature API と WSSSignPart API を使用して署名方式を選択します。 要求署名方式には、シグニチャー方式、正規化方式、 ダイジェスト方式、および変換方式があります。
始める前に
初めに、クライアントによって送信されるメッセージのどのパーツにデジタル署名しなければならないかを WSS API を使用して、または管理コンソールでポリシー・セットを構成して指定する必要があります。
このタスクについて
以下の表で、この情報の目的を説明しています。これらの定義の一部は、XML-Signature 仕様 (Web サイト http://www.w3.org/TR/xmldsig-core にあります) を基にしています。
方式の名前 | 説明 |
---|---|
正規化アルゴリズム | シグニチャー操作の一部としてダイジェストされる前に、<SignedInfo> エレメントを正規化します。 |
署名アルゴリズム | 正規化された <SignedInfo> エレメントのシグニチャー値を計算します。クライアント要求送信側構成用に選択したアルゴリズムは、サーバー要求受信側構成で選択したアルゴリズムと一致している必要があります。 |
変換方式 | シグニチャー操作の一部としてダイジェストされる前に、 署名するパーツを変換します。 |
ダイジェスト方式 | 変換されたパーツのダイジェスト値を計算します。 クライアント要求送信側構成用に選択したアルゴリズムは、サーバー要求受信側構成で選択したアルゴリズムと一致している必要があります。 |
署名アルゴリズム方式の構成は、WSS API を使用して行うことも、管理コンソールでポリシー・セットを構成して行うこともできます。WSS API を使用する場合は、 WSSSignature API と WSSSignPart API を使用して、クライアントを要求署名用に構成するときにどのメッセージ・パーツにデジタル署名するかを指定します。
WSSSignature API と WSSSignPart API では、以下のステップを実行して、署名アルゴリズム方式と署名パーツ・アルゴリズム方式を構成します。
手順
タスクの結果
例
以下の例は、署名情報、 すなわちシグニチャー方式として HMAC_SHA1、正規化方式として C14N、ダイジェスト方式として SHA256、変換方式として EXC_C14N および TRANSFORM_STRT10 を指定するためのサンプル・コードです。
//get the message context
Object msgcontext = getMessageContext();
//generate WSSFactory instance
WSSFactory factory = WSSFactory.getInstance();
//generate WSSGenerationContext instance
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
SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);
//generate WSSSignature instance
WSSSignature sig = factory.newWSSSignature(token);
//set the canonicalization method
// DEFAULT: WSSSignature.EXC_C14N
sig.setCanonicalizationMethod(WSSSignature.C14N);
//set the signature method
// DEFAULT: WSSSignature.RSA_SHA1
sig.setSignatureMethod(WSSSignature.HMAC_SHA1);
//set the part specified by WSSSignPart
WSSSignPart sigPart = factory.newWSSSignPart();
//set the digest method
// DEFAULT: WSSSignPart.SHA1
sigPart.setDigestMethod(WSSSignPart.SHA256);
//add the transform method
// DEFAULT: WSSSignPart.TRANSFORM_EXC_C14N
sigPart.addTransformMethod(WSSSignPart.TRANSFORM_EXC_C14N);
sigPart.addTransformMethod(WSSSignPart.TRANSFORM_STRT10);
// add the WSSSignPart to the WSSSignature
sig.addSignPart(sigPart);
//add the WSSSignature to the WSSGenerationContext
gencont.add(sig);
//generate the WS-Security header
gencont.process(msgcontext);
次のタスク
メッセージにデジタル署名してアルゴリズム方式を選択するようにクライアントを構成した後、 要求署名のデジタル署名を検証してアルゴリズム方式を選択するようにサーバーを構成する必要があります。
管理コンソールでポリシー・セットを構成して、 署名検査情報および方式をサーバーに構成します。