コンシューマー・バインディングの WSS API を使用して、署名 (シグニチャー) の情報を検査できます。 シグニチャー方式および正規化アルゴリズム方式はジェネレーター・バインディングで使用されます。 WSSVerification API は com.ibm.websphere.wssecurity.wssapi.verification パッケージに同梱です。
コンシューマー署名情報を構成してメッセージの保全性を保護するには、最初にデジタルで署名してから SOAP メッセージのシグニチャーを検査してください。 機密性が暗号化を意味するのに対して、「保全性」はデジタル・シグニチャーを意味します。 保全性によって、データがネットワーク内を伝送されている間に変更されるリスクが減少します。
要求ジェネレーターの構成用に指定されているアルゴリズムは、応答コンシューマーの構成用に指定されているアルゴリズムと一致している必要があります。
証明書の署名に使用するシグニチャー検査アルゴリズムを指定するシグニチャー・アルゴリズムです。 このシグニチャー・アルゴリズムは、シグニチャー検査方式の Uniform Resource Identifier (URI) を指定します。 WebSphere Application Server は、以下の事前構成アルゴリズムをサポートします。
アルゴリズム | 説明 |
---|---|
WSSVerification.HMAC_SHA1 | シグニチャー・アルゴリズム HMAC の URI: http://www.w3.org/2000/09/xmldsig#hmac-sha1 |
WSSVerification.RSA_SHA1 (デフォルト値) | シグニチャー・アルゴリズム RSA の URI: http://www.w3.org/2000/09/xmldsig#rsa-sha1 |
WebSphere Application Server は DSA-SHA1 のアルゴリズム (http://www.w3.org/2000/09/xmldsig#dsa-sha1) をサポートしていません。
正規化アルゴリズムは、正規化方式の Uniform Resource Identifier (URI) を指定します。 WebSphere Application Server は、以下の事前構成アルゴリズムをサポートします。
アルゴリズム | 説明 |
---|---|
WSSVerification.C14N | 包括的正規化アルゴリズム C14N の URI: http://www.w3.org/2001/10/xml-c14n# |
WSSVerification.EXC_C14N (デフォルト値) | 排他的正規化アルゴリズム EXC_C14N の URI: http://www.w3.org/2001/10/xml-exc-c14n# |
以下の例は、X.509 トークンをシグニチャー検査用セキュリティー・トークンとして指定した場合の WSS API サンプル・コードです。
WSSFactory factory = WSSFactory.getInstance(); WSSConsumingContext concont = factory.newWSSConsumingContext(); // X509ConsumeCallbackHandler X509ConsumeCallbackHandler callbackHandler = new X509ConsumeCallbackHandler("dsig-receiver.ks", "jks", "server".toCharArray(), certList, java.security.Security.getProvider("IBMCertPath")46 ); // Set the verification component // DEFAULT verification parts: Body, WS-Addressing header, and Timestamp // DEFAULT data encryption algorithm: RSA-SHA1 // DEFAULT digest algorithm: SHA1 // DEFAULT canonicalization algorithm: exc-c14n WSSVerification ver = factory.newWSSVerification(X509Token.class, callbackhandler); concont.add(ver); // Validate the WS-Security header concont.validate(msgctx);