Konsumentensicherheitstoken mit der WSS-API konfigurieren

Mit den APIs von Web Services Security können Sie die SOAP-Nachrichten ohne Richtliniensätze sichern. Wenn Sie das Token auf der Konsumentenseite konfigurieren möchten, verwenden Sie die Anwendungsprogrammierschnittstellen (API, Application Programming Interface) von Web Services Security (WSS-APIs). Die Konsumentensicherheitstoken gehören zum Schnittstellenpaket "com.ibm.websphere.wssecurity.wssapi.token".

Vorbereitende Schritte

Das Framework für Plug-in-Token in WebSphere Application Server wurde neu gestaltet, damit dasselbe Framework über die WSS-APIs wiederverwendet werden kann. Für die Laufzeitumgebung von Web Services Security und für den WSS-API-Anwendungscode wird dieselbe Implementierung für das Erstellen und Validieren von Sicherheitstoken verwendet. Das neu gestaltete Framework vereinfacht auch das SPI-Programmiermodell und das Hinzufügen von Sicherheitstokentypen.

Sie können die WSS-API verwenden oder die Token über die Administrationskonsole konfigurieren. Zum Konfigurieren von Token müssen Sie bei Bedarf die folgende Tokentask ausgeführt haben: Generatortoken konfigurieren.

Informationen zu diesem Vorgang

Auf der Generatorseite sind der JAAS-CallbackHandler und das JAAS-Anmeldemodul für das Erstellen des Sicherheitstokens verantwortlich. Das Token wird mit dem JAAS-Anmeldemodul erstellt, und mit dem JAAS-CallbackHandler werden die Authentifizierungsdaten übergeben. Anschließend erstellt das JAAS-Anmeldemodul das securityToken-Objekt, z. B. das UsernameToken, und übergibt es an die Laufzeitumgebung von Web Services Security.

Auf der Konsumentenseite wird das XML-Format zur Validierung und Authentifizierung an das JAAS-Anmeldemodul übergeben. Anschließend wird der JAAS-CallbackHandler verwendet, um Authentifizierungsdaten von der Laufzeitumgebung von Web Services Security an das Anmeldemodul zu übergeben. Nach der Authentifizierung des Tokens und der Erstellung des Sicherheitstokenobjekts wird das Token an die Laufzeitumgebung von Web Services Security übergeben.

Wenn die WSS-API für die Validierung des Konsumententokens verwendet wird, sind bestimmte Verhalten zu beobachten. Die WSS-API lässt sich am einfachsten über das JAAS-Standardanmeldemodul und den Callback-Handler verwenden. In dem Beispiel werden das Standardanmeldemodul und der Standard-Callback-Handler verwendet. Deshalb ist in dem Beispiel der Name des JAAS-Anmeldemoduls nicht angegeben.

Die API WSS lässt sich am einfachsten über den Einsatz des Standardverhaltens verwenden (siehe Beispielcode). Die WSS-API stellt Standardeinstellungen für den Tokentyp, den Tokenwert und den JAAS-Konfigurationsnamen bereit. Im Folgenden sind die Standardverhalten für Token beschrieben:

Tabelle 1. Standardtokenverhalten. Verschiedene Kenndaten von Token werden standardmäßig konfiguriert.
Entscheidungen bzgl. Konsumententoken Standardverhalten
Zu verwendender Tokentyp

Der Tokentyp gibt an, welcher Typ von Token für die Signatur und Validierung von Nachrichten verwendet werden soll. Standardmäßig wird ein X.509-Token verwendet.

WebSphere Application Server stellt die folgenden vorkonfigurierten Typen von Konsumententoken bereit:

  • Sicherheitskontexttoken
  • Abgeleitetes Schlüsseltoken
  • X509-Token

Bei Bedarf können Sie aus angepasste Tokentypen erstellen:

Anzugebender Name für die JAAS-Anmeldekonfiguration

Der Name für die JAAS-Anmeldekonfiguration gibt an, welche JAAS-Anmeldekonfiguration verwendet werden soll.

Zu verwendender Konfigurationstyp Der Konfigurationstyp des JAAS-Anmeldemoduls. Für Konsumententoken können nur vorkonfigurierte Konsumentenkonfigurationstypen verwendet werden.

Die SecurityToken-Klasse (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) ist die generische Tokenklasse und stellt das Sicherheitstoken dar, das Methoden für das Abrufen der Identität, des XML-Formats und der Chiffrierschlüssel enthält. Mit der SecurityToken-Klasse können Sie Signatur und Verschlüsselung auf die SOAP-Nachricht anwenden. Wenn Sie beides anwenden möchten, müssen Sie jedoch zwei SecurityToken-Objekte haben, eines für die Signatur und eines für die Verschlüsselung.

Die folgenden Tokentypen sind Unterklassen der generischen Sicherheitstokenklasse:

Tabelle 2. Unterklassen von SecurityToken. Verwenden Sie die Unterklassen zur Darstellung des Sicherheitstokens.
Tokentyp Name der JAAS-Anmeldekonfiguration
Sicherheitskontexttoken system.wss.consume.sct
Abgeleitetes Schlüsseltoken system.wss.consume.dkt

Die folgenden Tokentypen sind Unterklassen der binären Sicherheitstokenklasse:

Tabelle 3. Unterklassen von BinarySecurityToken. Verwenden Sie die Unterklassen zur Darstellung des binären Sicherheitstokens.
Tokentyp Name der JAAS-Anmeldekonfiguration
X.509-Token system.wss.consume.x509
X.509-PKIPath-Token system.wss.consume.pkiPath
X.509-PKCS7-Token system.wss.consume.pkcs7
Anmerkung:
  • Für jede JAAS-Anmeldekonfiguration auf Tokenkonsumentenseite gibt es eine entsprechende Konfiguration auf Tokengeneratorseite. Für das X509Token lautet der Name der Tokengeneratorkonfiguration beispielsweise system.wss.generate.x509.
  • Die LTPA- und LTPA-Weitergabetoken sind nur für einen Anforderer verfügbar, der als serverbasierter Client ausgeführt wird. Die LTPA-Token und LTPA-Weitergabetoken werden für Anwendungsclients des Typs Java™ SE 6 und Java EE nicht unterstützt.

Zum Validieren des X509Token für die SOAP-Nachricht auf Konsumentenseite muss das Element <X509Token> im Element <wsse:Security> enthalten sein.

Vorgehensweise

  1. Zum Validieren des securityToken-Pakets "com.ibm.websphere.wssecurity.wssapi.token" müssen Sie zuerst sicherstellen, dass der Anwendungsserver installiert ist.
  2. Wenn die Standardwerte verwendet werden, werden die Token für den WSS-Tokenkonsumentenprozess konfiguriert. Für alle Tokentypen gleicht der Prozess dem folgenden Tokenkonsumentenprozess:
    1. Mit WSSFactory.getInstance() die Instanz der WSS-API-Implementierung abrufen.
    2. WSSConsumingContext-Instanz aus der WSSFactory-Instanz erstellen. In einer JAX-WS-Clientanwendung muss immer WSSConsumingContext aufgerufen werden.
    3. JAAS-CallbackHandler mit den erforderlichen Informationen für die Validierung des Sicherheitstokens erstellen. In den Informationen zur Tokenklasse ist beschrieben, welche Parameter erforderlich und welche optional sind. Für ein X.509-Token kann Folgendes konfiguriert werden:
      Tabelle 4. Optionen für X.509-Token. Verwenden Sie die Konfigurationsoptionen für X.509-Token, um das Verhalten des Tokens zu steuern.
      Tokeninformationen Beschreibung
      keyStoreRef Gibt den Referenznamen des Keystores an, der auf der Verschlüsselungskarte gespeichert ist. Er kann angegeben werden, wenn die Karte auf die Hardware eingestellt ist.
      keyStorePath Gibt den Pfad der Keystore-Datei an. keyStorePath muss nicht angegeben werden, wenn keyStoreRef gesetzt ist.
      keyStorePassword Gibt das Kennwort der Keystore-Datei an.
      keyStoreType Gibt den Typ der Keystore-Datei an.
      alias Gibt den Aliasnamen des Schlüssels an.
      keyPassword Gibt das Kennwort des Schlüssels an.
      keyName Gibt den Subjektnamen des Schlüssels an.
    4. Setzt den Callback-Handler in WSSDecryption, WSSVerification oder WSSConsumingContext.
    5. Wenn der Callback-Handler in WSSDecryption oder WSSVerification gesetzt wird, wird er WSSConsumingContext hinzugefügt.
    6. WSSConsumingContext.process() aufrufen.
  3. Wenn Sie von den Standardwerten abweichende Werte verwenden, werden die Token für den WSS-Tokenkonsumentenprozess konfiguriert. Für alle Tokentypen gleicht der Prozess dem folgenden Tokenkonsumentenprozess:
    1. Wenn Sie das JAAS-Standardanmeldemodul und den Standard-Callback-Handler nicht verwenden, müssen Sie einen angepassten Handler vorbereiten und den Namen der JAAS-Anmeldekonfiguration im Voraus über die Administrationskonsole registrieren.
    2. Mit WSSFactory.getInstance() die Instanz der WSS-API-Implementierung abrufen.
    3. WSSConsumingContext-Instanz aus der WSSFactory-Instanz erstellen. In einer JAX-WS-Clientanwendung muss immer WSSConsumingContext aufgerufen werden.
    4. Callback-Handler mit den erforderlichen Informationen für die Validierung des Sicherheitstokens erstellen. In den Informationen zur Tokenklasse ist beschrieben, welche Parameter erforderlich und welche optional sind. Für ein X.509-Token kann Folgendes konfiguriert werden:
      Tabelle 5. Optionen für X.509-Token. Verwenden Sie die Konfigurationsoptionen für X.509-Token, um das Verhalten des Tokens zu steuern.
      Tokeninformationen Beschreibung
      keyStoreRef Gibt den Referenznamen des Keystores an, der auf der Verschlüsselungskarte gespeichert ist. Er kann angegeben werden, wenn die Karte auf die Hardware eingestellt ist.
      keyStorePath Gibt den Pfad der Keystore-Datei an. keyStorePath muss nicht angegeben werden, wenn keyStoreRef gesetzt ist.
      keyStorePassword Gibt das Kennwort der Keystore-Datei an.
      keyStoreType Gibt den Typ der Keystore-Datei an.
      alias Gibt den Aliasnamen des Schlüssels an.
      keyPassword Gibt das Kennwort des Schlüssels an.
      keyName Gibt den Subjektnamen des Schlüssels an.
    5. Setzt den JAAS-Konfigurationsnamen und den Callback-Handler in WSSDecryption, WSSVerification oder WSSConsumingContext.
    6. Wenn der JAAS-Konfigurationsname und der Callback-Handler in WSSDecryption oder WSSVerification gesetzt werden, werden sie in WSSConsumingContext gesetzt.
    7. WSSConsumingContext.process() aufrufen.

Ergebnisse

Wenn eine Fehlerbedingung eintritt, wird eine Ausnahme vom Typ "WSSException" angezeigt. Bei erfolgreiche Ausführung wird WSSConsumingContext.process() aufgerufen, und das Sicherheitstoken wird auf Konsumentenseite validiert (authentifiziert).

Beispiel

Der folgende WSS-API-Beispielcode veranschaulicht die Entschlüsselung mit dem JAAS-Standardanmeldemodul und dem Standard-Callback-Handler:

// Nachrichtenkontext abrufen
   Object msgcontext = getMessageContext();

// WSSFactory-Instanz erstellen (Schritt a)
   WSSFactory factory = WSSFactory.getInstance();		

// WSSConsumingContext-Instanz generieren (Schritt b)
   WSSConsumingContext gencont = factory.newWSSConsumingContext();

// Callback-Handler generieren (Schritt c)
   X509ConsumeCallbackHandler callbackHandler = new 
        X509ConsumeCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(), 
                                   "alice", 
                                   "keypass".toCharArray(), 
                                   "CN=Alice, O=IBM, C=US");

// WSSDecryption-Instanz generieren (Schritt d)
   WSSDecryption dec = factory.newWSSDecryption(X509Token.class, 
                                                callbackHandler);


// WSSDecryption zu WSSConsumingContext hinzufügen (Schritt e)
   concont.add(dec);

// WS-Security-Header validieren (Schritt f)
concont.process(msgcontext);

Nächste Schritte

Konfigurieren Sie für jeden Tokentyp das Token mit den WSS-APIs oder über die Administrationskonsole. Geben Sie als Nächstes ähnliche Generatortoken an, sofern Sie dies noch nicht getan haben.

Wenn die Generator- und Konsumententoken beide konfiguriert sind, fahren Sie mit der Sicherung der SOAP-Nachrichten auf Antwortkonsumentenseite über die WSS-APIs fort, oder konfigurieren Sie die Token über die Administrationskonsole.

Wenn die Generator- und Konsumententoken beide konfiguriert sind, fahren Sie mit dem Sichern der SOAP-Nachrichten durch Überprüfen der Signatur oder Entschlüsselung der Nachrichten fort. Sie können zum Sichern der SOAP-Nachrichten die WSS-APIs oder die Administrationskonsole verwenden.


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_confwssconsumertoken
Dateiname:twbs_confwssconsumertoken.html