JAX-WS-basierte Web-Service-Clientanwendungen entwickeln, die Sicherheitstoken abrufen

Die Sicherheitshandler sind für die Weitergabe von Sicherheitstoken verantwortlich. Diese Sicherheitstoken werden in den SOAP-Sicherheitsheader eingebunden und an nachgeschaltete Server übergeben.

Informationen zu diesem Vorgang

Dieser Information gelten nur für Java™ API for XML-based Web Services (JAX-WS).

Die Sicherheitstoken sind in den Implementierungsklassen für die Schnittstelle "com.ibm.wsspi.wssecurity.auth.token.Token" gekapselt. Sie können die Daten für das Sicherheitstoken von einer Serveranwendung oder einer Clientanwendung anfordern.

Bei einer Clientanwendung fungiert die Anwendung als Anforderungsgenerator und als Antwortkonsument und wird als Java-EE-Clientanwendung (Java Platform, Enterprise Edition) ausgeführt. Die Konsumentenkomponente für Web Services Security speichert die empfangenen Sicherheitstoken in einem der Eigenschaften des Objekts "MessageContext" für den aktuellen Web-Service-Aufruf. Sie können die Tokenobjekte über die Schnittstelle "javax.xml.rpc.Stub" dieses Web-Service-Aufrufs anfordern. Sie müssen die abzurufenden Sicherheitstoken und die Token-IDs kennen, falls mehrere Sicherheitstoken im SOAP-Sicherheitsheader enthalten sind. Führen Sie die folgenden Schritte aus, um die Daten für ein Sicherheitstoken von einer Clientanwendung anzufordern:

Vorgehensweise

  1. Rufen Sie mit der Schlüsselzeichenfolge "com.ibm.wsspi.wssecurity.token.tokenPropagation" die Hash-Tabelle für die Token über einen Eigenschaftswert in der Schnittstelle "javax.xml.ws.Stub" ab. Das folgende Beispiel zeigt, wie Sie die Hash-Tabelle anfordern:
    java.util.Hashtable t;
    
    javax.xml.ws.Service serv = …;
    serv.addPort(...);
    javax.xml.ws.Dispatch<Object> dispatch = svc.createDispatch(...);
    
    Map<String, Object> requestContext = dispatch.getRequestContext(); 
    requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ..);
    requestContext.put(BindingProvider.SOAPACTION_USE_PROPERTY, ..);
    requestContext.put(BindingProvider.SOAPACTION_URI_PROPERTY, ..);
    
    String response = dispatch.invoke(body.toString());
    
    Map<String, Object> responseContext = dispatch.getResponseContext();
    
    t = (Hashtable) responseContext.get( 
    com.ibm.wsspi.wssecurity.Constants.WSSECURITY_TOKEN_PROPERGATION);
  2. Suchen Sie die gewünschten Tokenobjekte in der Hash-Tabelle. Jedes Tokenobjekt in der Hash-Tabelle ist mit der Token-ID als Schlüssel definiert. Sie müssen die Sicherheitstoken-IDs kennen, um die Sicherheitstoken abrufen zu können. Das folgende Beispiel zeigt, wie Sie mit einer bestimmten Token-ID ein UsernameToken aus dem Sicherheitsheader abrufen:
    com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
    if (t != null) {
      unt = (com.ibm.wsspi.wssecuty.auth.token.UsernameToken)t.get(“…”);
    }

Ergebnisse

Nach der Ausführung dieser Schritte haben Sie die Sicherheitstoken abgerufen, die vom WS-Security-Handler in einer Clientanwendung verarbeitet werden.

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_retrievetokencl_jaxws
Dateiname:twbs_retrievetokencl_jaxws.html