Für den Client Prüfmethoden für die Antwortsignatur konfigurieren
Verwenden Sie die APIs WSSVerification und WSSVerifyPart, um die Prüfmethoden für die Signatur auszuwählen. Zu den Prüfmethoden für die Anforderungssignatur gehören der Digest-Algorithmus und die Transportmethoden.
Vorbereitende Schritte
- Verwenden Sie die API WSSVerification, um die Kanonisierungs- und Signaturmethoden zu konfigurieren.
- Verwenden Sie die API WSSVerifyPart, um die Digest- und Umsetzungsmethoden zu konfigurieren.
Informationen zu diesem Vorgang
Die folgende Tabelle beschreibt den Zweck dieser Informationen. Einige dieser Definitionen basieren auf der Spezifikation "XML-Signature", die Sie auf der folgenden Website finden: http://www.w3.org/TR/xmldsig-core.
Name der Methode | Zweck |
---|---|
Digest-Algorithmus | Der Algorithmus für die Digest-Methode wird, sofern angegeben, nach den Umsetzungen auf die Daten angewendet, um das Element <DigestValue> zu erzeugen. Durch die Signatur des Elements <DigestValue> wird der Ressourceninhalt an den Unterzeichnerschlüssel gebunden. Der Algorithmus, der für die Konfiguration des Senders der Clientanforderung ausgewählt wurde, muss mit dem Algorithmus, der in der Konfiguration des Empfängers der Clientanforderung ausgewählt wurde, übereinstimmen. |
Umsetzungsalgorithmus | Wird auf das Element <Transform> angewendet. |
Signaturalgorithmus | Gibt den Uniform Resource Identifiers (URI) der Signaturprüfmethode an. |
Kanonisierungsalgorithmus | Gibt den Uniform Resource Identifiers (URI) der Kanonisierungsmethode an. |
Nachdem Sie den Client für die digitale Signatur der Nachricht konfiguriert haben, müssen Sie den Client für die Prüfung der digitalen Signatur konfigurieren. Zur Prüfung der digitalen Signatur und zur Auswahl der Prüfalgorithmen und Algorithmen für die Prüfabschnitte können Sie die WSS-APIs verwenden oder über die Administrationskonsole Richtliniensätze. Bei der Verwendung der WSS-APIs für die Konfiguration können Sie mit den APIs WSSVerification und WSSVerifyPart angeben, welche digital signierten Nachrichtenabschnitte geprüft und welche Algorithmusmethoden verwendet werden sollen, wenn der Client für die Anforderungssignatur konfiguriert wird.
Die APIs WSSVerification und WSSVerifyPart führen die folgenden Schritte aus, um die Algorithmusmethoden für die Signaturprüfung und die Prüfabschnitte zu konfigurieren:
Vorgehensweise
Ergebnisse
Beispiel
Das folgende Beispiel enthält WSS-API-Beispielcode, der die Prüfinformationen, den Hauptteil als zu prüfenden Abschnitt, HMAC_SHA1 als Signaturmethode, C14N und EXC_C14N als Kandidaten für die Kanonisierungsmethode, TRANSFORM_STRT10 als Umsetzungsmethode und SHA256 als Digest-Methode angibt.
// 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 : String
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 zu WSSConsumingContext hinzufügen
concont.add(ver);
// WS-Security-Header validieren
concont.process(msgcontext);
Nächste Schritte
Sie haben die Konfiguration der Signaturprüfalgorithmen abgeschlossen. Konfigurieren Sie als Nächstes die Verschlüsselungs- oder Entschlüsselungsalgorithmen, falls noch keine konfiguriert sind. Bei Bedarf können Sie auch Informationen zum Sicherheitstoken konfigurieren.