Signierte Abschnitte mit der Anwendungsprogrammierschnittstelle "WSSSignPart" hinzufügen
Sie können die SOAP-Nachrichten ohne Verwendung von Richtliniensätzen für die Konfiguration sichern, indem Sie die Anwendungsprogrammierschnittstellen (API, Application Programming Interface) von Web Services Security (WSS-API) verwenden. Wenn Sie zu signierende Abschnitte für die Anforderungsgeneratorbindungen (Clientseite) konfigurieren möchten, können Sie mit der API "WSSSignPart" die Integrität von Nachrichten schützen und die Digest- und Umsetzungsalgorithmusmethoden konfigurieren. Die API "WSSSignPart" gehört zum Paket "com.ibm.websphere.wssecurity.wssapi.signature".
Vorbereitende Schritte
Sie können zum Konfigurieren der Signaturdaten die WSS-API verwenden oder in der Administrationskonsole Richtliniensätze konfigurieren. Führen Sie eine der folgenden Tasks aus, um SOAP-Nachrichten mit Signaturdaten zu sichern:
- Signaturdaten konfigurieren
- Signierte Abschnitte konfigurieren (bei Bedarf)
Informationen zu diesem Vorgang
WebSphere WebSphere Application Server verwendet die Signaturdaten für den Standardgenerator, um Abschnitte der Nachrichten zu signieren, und die digitale XML-Signatur mit vorhandenen Digest- und Umsetzungsalgorithmen (z. B. SHA1 oder TRANSFORM_EXC_C14N).
Die Signaturdaten geben die Integritätsbedingungen an, die auf generierte Nachrichten angewendet werden. Die signierten Abschnitte werden verwendet, um die Integrität von Nachrichten zu schützen. Sie können die signierten Abschnitte angeben, die zum Schutz der Nachrichtenintegrität hinzugefügt werden sollen.
In der folgenden Tabelle sind Abschnitte aufgelistet, die signiert werden müssen, wenn die Integritätsbedingung für die Sicherheit der digitalen Signatur definiert ist:
Signierte Abschnitte | Beschreibung |
---|---|
keyword | Fügt signierte Abschnitte mit Schlüsselwörtern hinzu.
WebSphere Application Server unterstützt die folgenden Schlüsselwörter für signierte Abschnitte:
|
xpath | Fügt die signierten Abschnitte mit einem XPath-Ausdruck hinzu. |
header | Fügt den Header nach QName als signierten Abschnitt hinzu. |
timestamp | Fügt ein WSSTimestamp-Objekt als signierten Abschnitt hinzu. Wenn diese Option angegeben ist, geben die Zeitmarkeninformationen an, wann die Nachricht generiert wird und wann sie verfällt. |
Für Anforderungen auf der Generatorseite können verschiedene Nachrichtenabschnitte im Nachrichtenschutz angegeben werden. WSSSignPart unterstützt das Hinzufügen eines Umsetzungsalgorithmus, das Festlegen einer Digest-Methode, das Festlegen von Objekten als Ziele sowie die Angabe von Elementen und signierten Abschnitten, wie z. B. SOAP-Hauptteil, WS-Addressing-Header oder Zeitmarke.
Bei Signaturabschnitten sind bestimmte Standardverhalten zu beobachten. Die API "WSSSignPart" lässt sich am einfachsten über den Einsatz des Standardverhaltens verwenden (siehe Beispielcode). Im Folgenden sind die Standardverhalten für signierte Abschnitte beschrieben:
Entscheidungen bzgl. der Signatur | Standardverhalten |
---|---|
Zu signierende Abschnitte der SOAP-Nachricht | WebSphere Application Server unterstützt die Signatur der folgenden SOAP-Nachrichtenabschnitte und deren Verwendung für den Nachrichtenschutz:
|
Zu verwendende Digest-Methode | Definiert die Methode für den Digest-Algorithmus. Der im Element <DigestMethod> angegebene Algorithmus für die Digest-Methode wird im Element <SigningInfo> verwendet. WebSphere Application Server unterstützt die folgenden vorkonfigurierten
Digest-Methoden:
|
Zu verwendende Umsetzungsalgorithmen | Fügt die Umsetzungsmethode hinzu. Der Umsetzungsalgorithmus wird im Element
<Transform> angegeben und gibt den Umsetzungsalgorithmus für die Signatur an.
WebSphere Application Server unterstützt die folgenden vorkonfigurierten Umsetzungsalgorithmen:
|
Vorgehensweise
Ergebnisse
Beispiel
Im folgenden Beispielcode werden alle Methoden verwendet, die in der API "WSSSignPart" definiert sind:
// Nachrichtenkontext abrufen
Object msgcontext = getMessageContext();
// WSSFactory-Instanz erstellen (Schritt a)
WSSFactory factory = WSSFactory.getInstance();
// WSSGenerationContext-Instanz generieren (Schritt b)
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Callback-Handler generieren
X509GenerateCallbackHandler callbackHandler = new
X509GenerateCallbackHandler
"",
"dsig-sender.ks",
"jks",
"client".toCharArray(),
"soaprequester",
"client".toCharArray(),
"CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP", null);
// Für die Signatur zu verwendendes Sicherheitstoken generieren (Schritt c)
SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);
// WSSSignature-Instanz generieren (Schritt d)
WSSSignature sig = factory.newWSSSignature(token);
// Von WSSSignPart angegebenen Abschnitt festlegen (Schritt e)
WSSSignPart sigPart = factory.newWSSSignPart();
// Von WSSSignPart angegebenen Abschnitt festlegen (Schritt f)
sigPart.setSignPart(WSSSignature.BODY);
// Von WSSSignPart angegebene Digest-Methode festlegen (Schritt g)
sigPart.setDigestMethod(WSSSignPart.SHA256);
// Von WSSSignPart angegebene Umsetzungsmethode festlegen (Schritt h)
sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);
// Von WSSSignPart angegebenen Abschnitt hinzufügen (Schritt i)
sig.addSignPart(sigPart);
// WSSSignature zu WSSGenerationContext hinzufügen (Schritt j)
gencont.add(sig);
// WS-Security-Header generieren (Schritt k)
gencont.process(msgcontext);
Nächste Schritte
Verwenden Sie die API "WSSVerifyPart", oder konfigurieren Sie über die Administrationskonsole Richtliniensätze, um die signierten Abschnitte auf der Konsumentenseite zu prüfen.