Methoden für Prüfabschnitte mit der API WSSVerifyPart auswählen
Sie können die Informationen zur Signaturprüfung für die Konsumentenbindung mit der WSS-API konfigurieren. Der Umsetzungsalgorithmus und die Digest-Methoden werden für die Konsumentenbindung verwendet. Verwenden Sie die API WSSVerifyPart, um die Algorithmusmethoden zu konfigurieren. Die API WSSVerifyPart wird im Paket "com.ibm.websphere.wssecurity.wssapi.verification" bereitgestellt.
Wenn Sie Informationen zu Prüfabschnitten auf Konsumentenseite für den Schutz der Nachrichtenintegrität konfigurieren möchten, müssen Sie die Signatur und die signierten Abschnitte für die SOAP-Nachrichten zuerst digital signieren und anschließend prüfen. Integrität bezieht sich auf die digitale Signatur, wohingegen sich Vertraulichkeit auf die Verschlüsselung bezieht. Integrität verringert das Risiko der Datenmanipulation, wenn Daten über ein Netz übertragen werden.
Methoden
- Digest-Methode
- Legt die Digest-Methode fest.
- Umsetzungsmethode
- Legt die Umsetzungsalgorithmusmethode fest.
Digest-Algorithmen
Der Digest-Methodenalgorithmus wird im Element <Digest> angegeben. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Digest-Algorithmen:
Digest-Methode | Beschreibung |
---|---|
WSSVerifyPart.SHA1 (Standardwert) | Ein URI des Digest-Algorithmus SHA1: http://www.w3.org/2000/09/xmldsig#sha1 |
WSSVerifyPart.SHA256 | Ein URI des Digest-Algorithmus SHA256: http://www.w3.org/2001/04/xmlenc#sha256 |
WSSVerifyPart.SHA512 | Ein URI des Digest-Algorithmus SHA256: http://www.w3.org/2001/04/xmlenc#sha512 |
Umsetzungsalgorithmen
Der Umsetzungsalgorithmus wird im Element <Transform> angegeben und definiert den Umsetzungsalgorithmus für den signierten Abschnitt. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Umsetzungsalgorithmen:
Digest-Methode | Beschreibung |
---|---|
WSSVerifyPart.TRANSFORM_ENVELOPED_SIGNATURE | Ein URI des Umsetzungsalgorithmus "enveloped signature": http://www.w3.org/2000/09/xmldsig#enveloped-signature |
WSSVerifyPart.TRANSFORM_STRT10 | Ein URI des Umsetzungsalgorithmus "STR-Transform": http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform |
WSSVerifyPart.TRANSFORM_EXC_C14N (Standardwert) | Ein URI des Umsetzungsalgorithmus "Exc-C14N": http://www.w3.org/2001/10/xml-exc-c14n# |
WSSVerifyPart.TRANSFORM_XPATH2_FILTER | Ein URI des Umsetzungsalgorithmus "XPath2 Filter": http://www.w3.org/2002/06/xmldsig-filter2 |
- http://www.w3.org/TR/1999/REC-xpath-19991116
- http://www.w3.org/2002/07/decrypt#XML
Das folgende Beispiel enthält WSS-API-Beispielcode, der den Hauptteil mit der Digest-Methode SHA256 und den Umsetzungsmethoden TRANSFORM_EXC_14N und TRANSFORM_STRT10 prüft:
// Nachrichtenkontext abrufen
Object msgcontext = getMessageContext();
// WSSFactory-Instanz generieren
WSSFactory factory = WSSFactory.getInstance();
// WSSConsumingContext-Instanz generieren
WSSConsumingContext concont = factory.newWSSConsumingContext();
// Zertifikatsliste generieren
String certpath = "intca2.cer";// Position der X509-Zertifikatsdatei
X509Certificate x509cert = null;
try {
InputStream is = new FileInputStream(certpath);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
x509cert = (X509Certificate)cf.generateCertificate(is);
} catch(FileNotFoundException e1){
throw new WSSException(e1);
} catch (CertificateException e2) {
throw new WSSException(e2);
}
Set<Object> eeCerts = new HashSet<Object>();
eeCerts.add(x509cert);
// Zertifikatsspeicher erstellen
java.util.List<CertStore> certList = new java.util.ArrayList<CertStore>();
CollectionCertStoreParameters certparam = new
CollectionCertStoreParameters(eeCerts);
CertStore cert = null;
try {
cert = CertStore.getInstance("Collection", certparam, "IBMCertPath");
} catch (NoSuchProviderException e1) {
throw new WSSException(e1);
} catch (InvalidAlgorithmParameterException e2) {
throw new WSSException(e2);
} catch (NoSuchAlgorithmException e3) {
throw new WSSException (e3);
}
if(certList != null ){
certList.add(cert);
}
// Callback-Handler generieren
X509ConsumeCallbackHandler callbackHandler = new
X509ConsumeCallbackHandler(
"dsig-receiver.ks",
"jks",
"server".toCharArray(),
certList,
java.security.Security.getProvider("IBMCertPath")
);
// WSSVerification-Instanz generieren
WSSVerification ver = factory.newWSSVerification(X509Token.class,
callbackHandler);
// Kandidaten für die Signaturmethode für die Prüfung festlegen
// (Schritt 1)
// STANDARD: WSSVerification.RSA_SHA1
ver.addAllowedSignatureMethod(WSSVerification.HMAC_SHA1);
// Kandidaten für die Kanonisierungsmethode für die Prüfung festlegen
// (Schritt 2)
// STANDARD: WSSVerification.EXC_C14N
ver.addAllowedCanonicalizationMethod(WSSVerification.C14N);
ver.addAllowedCanonicalizationMethod(WSSVerification.EXC_C14N);
// Mit WSSVerifyPart anzugebenden Abschnitt festlegen
WSSVerifyPart verPart = factory.newWSSVerifyPart();
// Mit dem Schlüsselwort anzugebenden Abschnitt festlegen
verPart.setRequiredVerifyPart(WSSVerification.BODY);
// Kandidaten für die Digest-Methode für die Prüfung festlegen (Schritt 3)
// STANDARD: WSSVerifypart.TRANSFORM_EXC_C14N
verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_EXC_C14N);
verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_STRT10);
// Kandidaten für die Digest-Methode für die Prüfung festlegen (Schritt 4)
// STANDARD: WSSVerifyPart.SHA1
verPart.addAllowedDigestMethod(WSSVerifyPart.SHA256);
// WSSVerifyPart auf WSSVerification setzen
ver.addRequiredVerifyPart(verPart);
// WSSVerification auf WSSConsumingContext setzen
concont.add(ver);
// WS-Security-Header validieren
concont.process(msgcontext);