SOAP-Nachricht mit der Anwendungsprogrammierschnittstelle "WSSEncryption" verschlüsseln
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 den Client für die Anforderungsverschlüsselung auf der Generatorseite konfigurieren möchten, verwenden Sie die API "WSSEncryption", um die SOAP-Nachricht zu verschlüsseln. Die API "WSSEncryption "gibt beim Konfigurieren des Clients an, welche Abschnitte der SOAP-Anforderungsnachricht verschlüsselt werden sollen.
Vorbereitende Schritte
Sie können die WSS-API oder Richtliniensätze in der Administrationskonsole verwenden, um die Verschlüsselung zu aktivieren und Generatorsicherheitstoken in der SOAP-Nachricht hinzuzufügen. Führen Sie zum Sichern von SOAP-Nachrichten mit den WSS-APIs die folgenden Verschlüsselungstasks aus:
- Konfigurieren Sie mit der API "WSSEncryption" die Verschlüsselung, und wählen Sie die Verschlüsselungsmethoden aus.
- Konfigurieren Sie mit der API "WSSEncryptPart" die verschlüsselten Abschnitte.
Informationen zu diesem Vorgang
Die Verschlüsselungsdaten auf der Generatorseite werden für die Verschlüsselung einer abgehenden SOAP-Nachricht für die Anforderungsgeneratorbindungen (Clientseite) verwendet. Die Konfiguration des Clientgenerators muss mit der Konfiguration des Providerkonsumenten übereinstimmen.

Vertraulichkeitseinstellungen erfordern, dass Vertraulichkeitsbedingungen auf generierte Nachrichten angewendet werden. Zu diesen Bedingungen gehört auch, welche Nachrichtenabschnitte in der generierten Nachricht verschlüsselt sein müssen und welchen Nachrichtenabschnitten verschlüsselte Nonce- und Zeitmarkenelemente zugeordnet sein müssen.
Die folgenden Verschlüsselungsabschnitte können konfiguriert werden:
Verschlüsselungsabschnitte | Beschreibung |
---|---|
part | Fügt das WSSEncryptPart-Objekt als Ziel des Verschlüsselungsabschnitts hinzu. |
keyword | Fügt Verschlüsselungsabschnitte mit Schlüsselwörtern hinzu. WebSphere
Application Server unterstützt die folgenden Schlüsselwörter:
|
xpath | Fügt den Verschlüsselungsabschnitt mit einem XPath-Ausdruck hinzu. |
signature | Fügt die WSSignature-Komponente als Ziel des verschlüsselten Abschnitts hinzu. |
header | Fügt den SOAP-Header nach QName als Ziel des Verschlüsselungsabschnitts hinzu. |
securityToken | Fügt das SecurityToken-Objekt als Ziel des verschlüsselten Abschnitts hinzu. |
Bei der Verschlüsselung sind bestimmte Standardverhalten zu beobachten. Die API "WSSEncryption" lässt sich am einfachsten über den Einsatz des Standardverhaltens verwenden (siehe Beispielcode).
WSSEncryption stellt Standardeinstellungen für den Algorithmus für Schlüsselchiffrierung, den Algorithmus für Datenverschlüsselung, die Methode für Sicherheitstokenreferenzen und die Verschlüsselungsabschnitte, wie z. B. den Inhalt des SOAP-Hauptteils (Body) und die Signatur, bereit. Im Folgenden sind die Standardverhalten bei der Verschlüsselung beschrieben:
Entscheidungen bzgl. der Verschlüsselung | Standardverhalten |
---|---|
Mit Schlüsselwörtern zu verschlüsselnde SOAP-Nachrichtenabschnitte | Legt über Schlüsselwörter die Verschlüsselungsabschnitte fest, die Sie hinzufügen können. Die Standardverschlüsselungsabschnitte sind BODY_CONTENT und SIGNATURE. WebSphere Application Server unterstützt die folgenden Schlüsselwörter:
|
Auszuwählende Methode für Datenverschlüsselung (Algorithmus) | Legt die Methode für Datenverschlüsselung fest. Es können Methoden für Datenverschlüsselung und Schlüsselchiffrierung angegeben werden. Die Standardalgorithmusmethode für die Datenverschlüsselung ist AES 128. WebSphere Application Server unterstützt die folgenden Datenverschlüsselungsmethoden:
|
Verschlüsselung des Schlüssels (isEncrypt) | Gibt an, ob der Schlüssel verschlüsselt werden soll. Die gültigen Werte sind true und false. Standardmäßig wird der Schlüssel verschlüsselt (true). |
Auszuwählende Methode für Schlüsselchiffrierung (Algorithmus) | Legt die Methode für die Schlüsselchiffrierung fest. Es können Methoden für Datenverschlüsselung und Schlüsselchiffrierung angegeben werden. Die Standardalgorithmusmethode für die Schlüsselchiffrierung ist RSA OAEP. WebSphere Application Server unterstützt die folgenden Methoden für die Schlüsselchiffrierung:
|
Anzugebendes Sicherheitstoken (securityToken) | Legt das SecurityToken fest. Der Standardtyp für Sicherheitstoken ist X509Token. WebSphere Application Server stellt die folgenden vorkonfigurierten Typen von Konsumententoken bereit:
|
Zu verwendende Tokenreferenz (refType) | Legt den Typ der Sicherheitstokenreferenz fest. Die Standardtokenreferenz
ist SecurityToken.REF_KEYID. WebSphere Application Server unterstützt die folgenden Tokenreferenztypen:
|
Verwendung von MTOM (mtomOptimize) | Legt die MTOM-Optimierung (Message Transmission Optimization Mechanism) für den verschlüsselten Abschnitt fest. |
Vorgehensweise
Ergebnisse
Beispiel
Im folgenden Beispielcode werden Methoden verwendet, die in WSSEncryption 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(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// Für die Verschlüsselung verwendetes Sicherheitstoken generieren (Schritt c)
SecurityToken token = factory.newSecurityToken(X509Token.class , callbackHandler);
// WSSEncryption-Instanz generieren (Schritt d)
WSSEncryption enc = factory.newWSSEncryption(token);
// Zu verschlüsselnden Abschnitt festlegen (Schritt e)
// STANDARD: WSSEncryption.BODY_CONTENT und WSSEncryption.SIGNATURE
// Mit dem Schlüsselwort angegebenen Abschnitt festlegen (Schritt e)
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// Mit dem QName angegebenen Abschnitt im SOAP-Header festlegen (Schritt e)
enc.addEncryptHeader(new QName("http://www.w3.org/2005/08/addressing",
"MessageID"));
// Von WSSSignature angegebenen Abschnitt festlegen (Schritt e)
SecurityToken sigToken = getSecurityToken();
WSSSignature sig = factory.newWSSSignature(sigToken);
enc.addEncryptPart(sig);
// Von SecurityToken angegebenen Abschnitt festlegen (Schritt e)
UNTGenerateCallbackHandler untCallbackHandler =
new UNTGenerateCallbackHandler("Chris", "sirhC");
SecurityToken unt = factory.newSecurityToken(UsernameToken.class,
untCallbackHandler);
enc.addEncryptPart(unt, false);
// Mit dem XPath-Ausdruck angegebenen Abschnitt festlegen (Schritt e)
StringBuffer sb = new StringBuffer();
sb.append("/*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/'
and local-name()='Envelope']");
sb.append("/*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/'
and local-name()='Body']");
sb.append("/*[namespace-uri()='http://xmlsoap.org/Ping'
and local-name()='Ping']");
sb.append("/*[namespace-uri()='http://xmlsoap.org/Ping'
and local-name()='Text']");
enc.addEncryptPartByXPath(sb.toString());
// Festlegen, ob der Schlüssel chiffriert wird (Schritt f)
// STANDARD: true
enc.encryptKey(true);
// Datenverschlüsselungsmethode festlegen (Schritt g)
// STANDARD: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// Methode für Schlüsselchiffrierung festlegen (Schritt h)
// STANDARD: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// Tokenreferenz festlegen (Schritt i)
// STANDARD: SecurityToken.REF_KEYID
enc.setTokenReference(SecurityToken.REF_STR);
// WSSEncryption zu WSSGenerationContext hinzufügen (Schritt j)
gencont.add(enc);
// WS-Security-Header verarbeiten (Schritt k)
gencont.process(msgcontext);
Nächste Schritte
Falls Sie die zu verwendenden Verschlüsselungsmethoden noch nicht angegeben haben, verwenden Sie die WSS-API, oder konfigurieren Sie die Richtliniensätze mit der Administrationskonsole, um die Algorithmusmethoden für die Datenverschlüsselung und die Datenchiffrierung auszuwählen.