Weitergabe von SAML-Token über die API

Die Funktion für die Weitergabe von SAML-Token ist nützlich für Anwendungen, die über mehrere Server hinweg miteinander interagieren. Die Weitergabefunktion leitet Tokeninformationen im Downstream-Verfahren an andere Server weiter.

Sie können SAML-Token mit Verwaltungsbefehlen oder programmgesteuert über die SAML-Programmierschnittstelle weitergeben. Die Weitergabe mit Verwaltungsbefehlen wird in den Artikeln zur Weitergabe von SAML-Token und zu den entsprechenden Weitergabemethoden erläutert.

Die programmgesteuerte Weitergabe von SAML-Token wird durch eine Kombination expliziter Programmierungsvorgänge und der Verwendung der Laufzeitumgebung von Web Services Security realisiert. Beispielsweise können Sie das SAMLToken aus dem Objekt org.apache.axis2.jaxws.BindingProvider extrahieren. Das Token wird dann für abgehende Aufrufe verwendet. In diesem Beispiel ermöglicht Ihnen die programmgesteuerte Weitergabe des SAML-Tokens, die SAML-Sicherheit auf Anwendungsebene zu nutzen, da die WebSphere-Sicherheit nicht erforderlich ist. Außerdem kann das SAML-Token mit einem beliebigen Protokoll im Downstream-Verfahren übertragen werden.

Sie können das folgende Beispiel verwenden, um das SAMLToken nach Abschluss der ersten Anforderung clientseitig zu extrahieren.

Gehen Sie wie folgt vor, um ein Dispatch-Objekt zu erstellen und die Anforderung aufzurufen:
javax.xml.ws.Dispatch dispatch = ...;
dispatch.invoke();
Gehen Sie wie folgt vor, um einen Antwortkontext abzurufen und das SAMLToken zu extrahieren:
Map<String, Object> responseContext = dispatch.getResponseContext();
 				SAMLToken samlToken = 
       (SAMLToken ) responseContext.get(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
    SAMLTOKEN_OUT_MESSAGECONTEXT);

Der folgende Beispielcode zeigt, wie ein SAMLToken für nachfolgende Web-Service-Anforderungen wiederverwendet wird.

Das Web-Service-Clientprogramm erstellt eine Zuteilungsinstanz, um einen Service aufzurufen:
javax.xml.ws.Dispatch dispatch = ...;
Der Web-Service-Client verwendet diesen Code dann, um ein SAMLToken an den Web-Services-Security-Handler weiterzugeben:
Map<String, Object> requestContext = dispatch.getRequestContext();
     requestContext.put(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
     SAMLTOKEN_IN_MESSAGECONTEXT, samlToken);           

Der Web-Service-Provider (Empfänger) kann den folgenden Code verwenden, um ein SAMLToken aus einer eingehenden Web-Service-Anforderung zu extrahieren.

Gehen Sie wie folgt vor, um ein SAMLToken aus dem Anforderungskontext (requestContext) zu extrahieren:
Subject subject = (Subject) context.get(com.ibm.wsspi.wssecurity.core.Constants.WSSECURITY_TOKEN_WSSSUBJECT);
	SAMLToken samlToken = null;
try  {    
  		samlToken = (SAMLToken) AccessController.doPrivileged(
    				new java.security.PrivilegedExceptionAction() {
      public Object run() throws java.lang.Exception {
        						final java.util.Iterator authIterator = 
           subject.getPrivateCredentials(SAMLToken.class).iterator();

        						if ( authIterator.hasNext() ) {
          							final SAMLToken token = (SAMLToken) 
          authIterator.next();
          							return token;
        }
        return null;
      }
    });
} catch (Exception ex) {
  		// Fehlerbehandlung
}
  
Extrahieren Sie die SAML-Attribute:
List<SAMLAttribute> allAttributes;
allAttributes = ((SAMLToken) samlToken).getSAMLAttributes();

Die Laufzeitumgebung des Web-Service-Clients kann das SAML-Token zwischenspeichern. Bei nachfolgenden Clientanforderungen in der Anwendung ruft die Sicherheitslaufzeitumgebung das SAML-Token aus dem Cache ab, um es mit dem Ziel zu verwenden.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



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