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:

Tabelle 1. Informationen zu signierten Abschnitten. Verwenden Sie die verschlüsselten Abschnitte, um Nachrichten zu sichern.
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:
  • BODY
  • ADDRESSING_HEADERS
  • TIMESTAMP
Die WS-Addressing-Header werden nicht verschlüsselt, können aber signiert werden.
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:

Tabelle 2. Standardverhalten signierter Abschnitte. Verschiedene Kenndaten von signierten Abschnitten werden standardmäßig konfiguriert.
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:

  • WSSSignature.BODY
  • WSSSignature.ADDRESSING_HEADERS
  • WSSSignature.TIMESTAMP
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:
  • WSSSignPart.SHA1 (Standardwert): http://www.w3.org/2000/09/xmldsig#sha1
  • WSSSignPart.SHA256: http://www.w3.org/2001/04/xmlenc#sha256
  • WSSSignPart.SHA512: http://www.w3.org/2001/04/xmlenc#sha512
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:

  • WSSSignPart.TRANSFORM_EXC_C14N (Standardwert): http://www.w3.org/2001/10/xml-exc-c14n#
  • WSSSignPart.TRANSFORM_XPATH2_FILTER: http://www.w3.org/2002/06/xmldsig-filter2

    Verwenden Sie diese Umsetzungsmethode, um die Konformität mit Basic Security Profile (BSP) sicherzustellen.

  • WSSSignPart.TRANSFORM_STRT10: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
  • WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE: http://www.w3.org/2000/09/xmldsig#enveloped-signature

Vorgehensweise

  1. Wenn Sie Web Services Security mit der WSS-API (WSSSignPart) aktivieren möchten, müssen Sie zuerst sicherstellen, dass der Anwendungsserver installiert ist.
  2. Verwenden Sie die API "WSSSignPart", um die Nachrichtenabschnitte in einer SOAP-Nachricht zu signieren und die Algorithmen anzugeben. Der WSS-API-Prozess für signierte Abschnitte teilt sich in die folgenden Schritte auf:
    1. Mit WSSFactory.getInstance() die Instanz der WSS-API-Implementierung abrufen.
    2. WSSGenerationContext-Instanz aus der WSSFactory-Instanz erstellen.
    3. SecurityToken aus WSSFactory erstellen, um den Schlüssel für die Signatur zu konfigurieren.
    4. Mit dem SecurityToken die WSSSignature aus der WSSFactory-Instanz erstellen.
    5. WSSSignPart aus der WSSFactory-Instanz erstellen.
    6. Zu signierende Abschnitte und Digest- bzw. Umsetzungsmethode (Schritt g bzw. Schritt h) festlegen, falls die Standardeinstellung nicht angemessen ist.
    7. Digest-Methode festlegen, falls die Standardeinstellung nicht angemessen ist.
    8. Umsetzungsmethode festlegen, falls die Standardeinstellung nicht angemessen ist.
    9. WSSSignPart zu WSSSignature hinzufügen. Nachdem jeder WSSSignPart in WSSSignature gesetzt wurde, werden die standardmäßig zu signierenden Abschnitte, die in WSSSignature angegeben sind, ignoriert.
    10. WSSSignature zu WSSGenerationContext hinzufügen.
    11. WSSGenerationContext.process() mit dem SOAPMessageContext aufrufen.

Ergebnisse

Sie haben die Schritte zum Konfigurieren der signierten Abschnitte für den Generatorabschnitt der Bindungsdatei ausgeführt. Wenn eine Fehlerbedingung eintritt, wird eine Ausnahme vom Typ WSSException angezeigt. Bei erfolgreicher Signatur wird WSSGenerationContext.process() aufgerufen, und Web Services Security wird auf die SOAP-Nachricht angewendet.

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);
Anmerkung: Der X509GenerationCallbackHandler benötigt das Schlüsselkennwort, weil der private Schlüssel für die Signatur verwendet wird.

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.


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_confsignaturepartgen
Dateiname:twbs_confsignaturepartgen.html