Signaturdaten mit den WSS-APIs konfigurieren

Sie können die Signaturdaten für die clientseitigen Anforderungsgeneratorbindungen (Sender) konfigurieren. Signaturdaten werden verwendet, um Abschnitte einer Nachricht, wie z. B. den SOAP-Hauptteil, die Zeitmarkeninformationen oder das Benutzernamenstoken, zu signieren und zu validieren. Wenn Sie die Anforderungssignatur im Client konfigurieren möchten, müssen Sie während der Konfiguration des Clients angeben, welche Nachrichtenabschnitte signiert werden sollen.

Vorbereitende Schritte

WebSphere Application Server verwendet die digitale XML-Signatur mit vorhandenen Algorithmen, wie z. B. RSA, HMAC und SHA1. Die XML-Signatur definiert viele Methoden zur Beschreibung von Schlüsselinformationen und ermöglicht die Definition einer neuen Methode. Machen Sie sich vor der Ausführung dieser Schritte mit der digitalen XML-Signatur für die Signatur und Überprüfung digitaler Signaturen für digitalen Inhalt vertraut.

Informationen zu diesem Vorgang

Durch die Einbindung von XML-Signaturen in SOAP-Nachrichten werden folgende Punkte realisiert:Nachrichtenintegrität und Nachrichtenvertraulichkeit. Integrität bezieht sich auf die digitale Signatur, wohingegen sich Vertraulichkeit auf die Verschlüsselung bezieht. Integrität verringert das Risiko der Datenmanipulation, während die Daten im Internet übertragen werden. WebSphere Application Server verwendet die Signaturdaten für den Standardgenerator, um Nachrichtenabschnitte wie den Hauptteil (Body) der Nachricht, Zeitmarke und das Benutzernamenstoken zu signieren.

Für die Signaturdaten müssen Sie Folgendes angeben:
  • zu signierende Abschnitte der Nachricht,
  • Schlüsseldaten, die von den Schlüsseldaten für die Signierschlüssel referenziert werden,
  • Signaturalgorithmen.

WebSphere Application Server stellt Standardwerte für Bindungen bereit. Diese Standardwerte müssen jedoch vom Systemadministrator für die Produktionsumgebung geändert werden.

Die API WSSSignature konfiguriert die folgenden Abschnitte als Signaturabschnitt:

Tabelle 1. Vorkonfigurierte Signaturabschnitte. Sie können die Signaturdaten verwenden, um Abschnitte einer Nachricht zu verwenden.
Abschnitt Beschreibung
Sicherheitstokenobjekt Dieses Objekt authentifiziert den Client. Wenn diese Option angegeben ist, wird die Nachricht signiert. Wenn die Authentifizierungsmethode durch Anmeldekonfiguration ausgewählt ist, können Sie die Nachricht mit einem Sicherheitstoken digital signieren.
WSSTimestamp-Objekt Dieses Objekt fügt einer Nachricht eine Zeitmarke hinzu. Die Zeitmarke bestimmt, ob die Nachricht basierend auf der Sende- und Empfangszeit gültig ist.
WSSSignature-Abschnittsobjekt Dieses Objekt fügt einer Nachricht die Signaturabschnitte hinzu.
SOAP-Header und QName als Ziel Dieser Signaturabschnitt fügt den mit dem QName angegebenen Header als Prüfabschnitt hinzu.

Die WSS-APIs lassen die Verwendung von Schlüsselwörtern und XPath-Ausdrücken für die Angabe der zu signierenden Nachrichtenabschnitte zu. WebSphere Application Server unterstützt die Verwendung der folgenden Schlüsselwörter:

Tabelle 2. Unterstützte Schlüsselwörter für Signatur. Die Schlüsseldaten werden verwendet, um anzugeben, welche Abschnitte einer Nachricht signiert werden sollen.
Schlüsselwort Referenzen
ADDRESSING_HEADERS Die WS-Addressing-Header (Web Services Addressing).
BODY Der SOAP-Nachrichtenhauptteil. Der Teil der Nachricht, der die Benutzerdaten enthält.
TIMESTAMP Die Informationen zur Erstellung und zum Verfall der Zeitmarke.

Die APIs von Web Services Security (WSS-APIs) werden verwendet, um die Signaturdaten für den Anforderungsgeneratorabschnitt (Clientseite) der Bindungsdatei zu konfigurieren. Zum Konfigurieren der Signaturdaten auf der Clientseite können Sie die WSS-APIs verwenden oder in der Administrationskonsole Richtliniensätze für die Signatur konfigurieren.

Wenn Sie die Konfiguration mit den WSS-APIs durchführen, führen die APIs WSSSignature und WSSSignPart beim Konfigurieren des Clients für die Anforderungsgeneratorsignatur die folgenden Schritte aus, um die Nachrichtenabschnitte anzugeben, die digital signiert werden sollen:

Vorgehensweise

  1. Die API WSSSignature fügt die erforderlichen Abschnitte der SOAP-Nachricht hinzu, die digital signiert werden sollen. Zur Angabe der erforderlichen Verschlüsselungsabschnitte kann ein Schlüsselwort oder ein XPath-Ausdruck verwendet werden.
  2. Die API WSSSignature definiert den Signaturmethodenalgorithmus. Die Standardmethode ist RSA_SHA1. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Algorithmen:

    WebSphere Application Server bietet keine Unterstützung für den folgenden Algorithmus für DSA-SHA1: http://www.w3.org/2000/09/xmldsig#dsa-sha1. Der DSA-SHA1-Algorithmus kann nicht verwendet werden, wenn eine Kompatibilität mit Basic Security Profile (BSP) erforderlich ist.

    Jedes Element "ds:SignatureMethod/@Algorithm" in einer Signatur basiert auf einem symmetrischen Schlüssel und muss den Wert "RSA-SHA1" oder "HMAC-SHA1" haben.

    Der Algorithmus, der für die Anforderungsgeneratorkonfiguration angegeben wird, muss mit dem Algorithmus übereinstimmen, der für die Anforderungskonsumentenkonfiguration angegeben ist.

  3. Die API WSSSignature definiert die Kanonisierungsmethode. Die Standardsignaturmethode ist EXC_C14N. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Algorithmen:
    • URI des exklusiven Kanonisierungsalgorithmus EXC_C14N: http://www.w3.org/2001/10/xml-exc-c14n#
    • URI des inklusiven Kanonisierungsalgorithmus C14N: http://www.w3.org/2001/10/xml-c14n#

    Der Kanonisierungsalgorithmus, den Sie für den Generator auswählen, muss mit dem Algorithmus für den Konsumenten übereinstimmen.

  4. Die API WSSSignature fügt ein Sicherheitstoken hinzu. Die API fügt Informationen zum Sicherheitstoken hinzu, das für die Signatur verwendet werden soll, z. B.
    • die Klasse für das Sicherheitstoken,
    • den Callback-Handler,
    • den Namen der JAAS-Anmeldekonfiguration.
  5. Die API WSSSignature definiert den Typ des Sicherheitstokens und den Typ der Tokenreferenz. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Tokenreferenzen:
    • SecurityToken.REF_STR

      Stellt die Sicherheitstokenreferenz als Tokenreferenztyp dar.

    • SecurityToken.REF_KEYID

      Stellt die Schlüsselkennungsreferenz als Tokenreferenztyp dar.

    • SecurityToken.REF_EMBEDDED

      Stellt die eingebettete Referenz als Tokenreferenztyp dar.

    • SecurityToken.REF_THUMBPRINT

      Stellt die Fingerabdrucksreferenz als Tokenreferenztyp dar.

  6. Wenn "SecurityToken.REF_KEYID" als Tokenreferenztyp definiert ist, definiert die API WSSSignature den Signaturtyp für die Schlüsseldaten und konfiguriert die Schlüsseldaten, die von den Schlüsseldatenreferenzen referenziert werden. WebSphere Application Server unterstützt Folgendes:
    • Angabe, dass das Element "KeyInfo" nicht signiert wird.
    • Angabe, dass das vollständige Element <KeyInfo> signiert wird.
    • Angabe, dass die untergeordneten Elemente <Keyinfochildelements> des Elements <KeyInfo> signiert werden.

    Wenn Sie keinen der vorherigen Signaturtypen angeben, gibt WebSphere Application an, dass standardmäßig das vollständige Element <KeyInfo> signiert wird.

    Wenn Sie "Keyinfo" oder "Keyinfochildelements" auswählen und in einem weiteren Schritt als Umsetzungsalgorithmus http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform auswählen, signiert WebSphere Application Server das referenzierte Token.

    Der Signaturtyp für Schlüsseldaten für den Generator muss mit dem Signaturtyp für den Konsumenten übereinstimmen.

  7. Die API WSSSignature gibt an, ob eine Signaturbestätigung erforderlich ist. Die OASIS-Spezifikation "Web Services Security (WS-Security) Version 1.1" definiert die Verwendung der Signaturbestätigung. Wenn Sie WS-Security Version 1.0 verwenden, ist diese Funktion nicht verfügbar.

    Der Wert für die Signaturbestätigung wird gespeichert, um damit die Signaturbestätigung zu prüfen, wenn die Empfangsnachricht zurückgegeben wird. Diese Methode wird aufgerufen, wenn erwartet wird, dass in der Antwortnachricht eine Signaturbestätigung an die SOAP-Nachricht angefügt wird.

  8. Die API WSSSignPart gibt die Abschnittsreferenz an. Die Abschnittsreferenzen geben an, welche Abschnitte der Nachricht digital signiert werden.

    Diese Referenz verweist auf den Nachrichtenabschnitt, der digital signiert wird. Das Attribut "part" verweist auf den Namen des Elements <Integrity>, wenn das Element <PartReference> für die Signatur angegeben ist. Sie können mehrere <PartReference>-Elemente im Element <SigningInfo> angeben. Das Element <PartReference> hat zwei untergeordnete Elemente, wenn es für die Signaturprüfung angegeben wird: <DigestTransform> und <Transform>.

  9. Die Anwendungsprogrammierschnittstelle "WSSSignPart" gibt den Digest-Methodenalgorithmus an. 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-Algorithmen:
    • http://www.w3.org/2000/09/xmldsig#sha1
    • http://www.w3.org/2001/04/xmlenc#sha256
    • http://www.w3.org/2001/04/xmlenc#sha512
  10. Die API WSSSignPart gibt den Umsetzungsalgorithmus an. Der im Element <Transform> angegebene Umsetzungsalgorithmus wird für die Signatur verwendet. WebSphere Application Server unterstützt die folgenden vorkonfigurierten Umsetzungsalgorithmen:
    • http://www.w3.org/2001/10/xml-exc-c14n#
    • http://www.w3.org/TR/1999/REC-xpath-19991116

      Verwenden Sie diesen Umsetzungsalgorithmus nicht, wenn die Konformität mit Basic Security Profile (BSP) gewährleistet sein soll. Verwenden Sie stattdessen zur Gewährleistung der Kompatibilität http://www.w3.org/2002/06/xmldsig-filter2.

    • http://www.w3.org/2002/06/xmldsig-filter2
    • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
    • http://www.w3.org/2002/07/decrypt#XML
    • http://www.w3.org/2000/09/xmldsig#enveloped-signature
    Der Umsetzungsalgorithmus, den Sie für den Generator angeben, muss mit dem Umsetzungsalgorithmus für den Konsumenten übereinstimmen.
    Wichtig: Wenn die beiden nachfolgend genannten Bedingungen zutreffen, signiert WebSphere Application Server das referenzierte Token:
    • Sie haben die Option "Keyinfo" bzw. "Keyinfochildelements" ausgewählt.
    • Sie haben folgenden Umsetzungsalgorithmus ausgewählt: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform.
  11. Wenn Sie die Signaturdaten des Clients und des Servers richtig konfigurieren, bei der Ausführung des Clients jedoch den Fehler Der SOAP-Body ist nicht signiert empfangen, müssen Sie möglicherweise den Actor konfigurieren. Konfigurieren Sie über die Administrationskonsole Richtliniensätze, um dieselben Actor-Zeichenfolgen für den Web-Service auf dem Server zu konfigurieren, der die Anforderung verarbeitet und die Antwort zurücksendet.

    Die Actor-Informationen auf dem Client und dem Server müssen auf exakt dieselbe Zeichenfolge verweisen. Wenn die Actor-Felder auf Client und Server übereinstimmen, wird die Anforderung bzw. Antwort verarbeitet und nicht an einen Downstream-Server weitergeleitet. Die Actor-Informationen können sich unterscheiden, wenn Sie Web-Services verwenden, die als Gateway zu anderen Web-Services fungieren. In allen anderen Fällen müssen Sie jedoch sicherstellen, dass die Actor-Informationen auf dem Client und auf dem Server übereinstimmen. Wenn Web-Services als Gateway fungieren und für sie nicht derselbe Actor konfiguriert ist wie für die Anforderung, die durch das Gateway weitergeleitet wird, verarbeiten Web-Services die Nachricht von einem Client nicht. Stattdessen senden diese Web-Services die Anforderung an einen Downstream-Server. Der Downstream-Prozess, der die richtige Actor-Zeichenfolge enthält, verarbeitet die Anforderung. Für die Antwort ergibt sich dieselbe Situation. Daher müssen Sie unbedingt überprüfen, ob die Actor-Felder des Clients und des Servers synchronisiert sind.

Ergebnisse

Nachdem die APIs WSSSignature und WSSSignPart diese Schritte ausgeführt haben, sind die Signaturdaten für die Generatorabschnitte der Bindungsdateien konfiguriert.

Beispiel

Das folgende Beispiel enthält WSS-API-Beispielcode, der veranschaulicht, wie die Signatur konfiguriert, der Callback-Handler generiert und der X.509-Tokentyp als Sicherheitstoken festgelegt wird:

WSSFactory factory = WSSFactory.getInstance();
// Generierungskontext instanziieren
WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Callback-Handler generieren und X.509-Token angeben
   X509GenerateCallbackHandler callbackhandler = generateCallbackHandler();
   SecurityToken token = factory.newSecurityToken(X509Token.class, 
                                                  callbackHandler);

// Signaturdaten festlegen
WSSSignature sig = factory.newWSSSignature(token);
// Header über QName hinzufügen
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "To"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "MessageID"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "Action"));
// Signatur anwenden
   gencont.add(sig);

// Nachricht sichern
gencont.process(msgctx);

Nächste Schritte

Sie müssen ähnliche Signaturdaten für die clientseitigen Anforderungskonsumentenbindungen (Empfänger) angeben. Führen Sie dazu die folgenden Prüftasks aus:
  • Signatur prüfen
  • Signaturalgorithmusmethoden auswählen
  • Signierte Abschnitte bei Bedarf ändern oder hinzufügen

Wenn die Signaturprüfung bereits konfiguriert ist, konfigurieren Sie die Verschlüsselungs- und Entschlüsselungsdaten, oder konfigurieren Sie die Konsumenten- und Generatortoken.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configsigninfogenjaxws
Dateiname:twbs_configsigninfogenjaxws.html