Propagación de señales SAML mediante la API

La función de propagación de SAML es útil para las aplicaciones que interactúan en varios servidores. La característica de propagación comunica la información de señales del servidor de origen descendente a otros servidores.

Puede propagar señales SAML utilizando mandatos administrativos o mediante programación con la interfaz de programación de aplicaciones (API) de SAML. La propagación por medio de los mandatos administrativos se describe en los temas Propagación de señales SAML y Métodos de propagación de señales SAML.

La propagación mediante programación de señales SAML se lleva a cabo a través de una combinación de programación explícita y el uso del entorno de ejecución de la seguridad de los servicios Web. Por ejemplo, puede extraer SAMLToken del objeto org.apache.axis2.jaxws.BindingProvider. La señal se utiliza, a continuación, para las llamadas de salida. En este ejemplo, puesto que la seguridad de WebSphere no es obligatoria, la propagación mediante programación de la señal SAML permite explotar la seguridad de SAML en el nivel de aplicación. Además, la señal SAML se puede comunicar en sentido descendente con cualquier protocolo.

Utilice el código de ejemplo siguiente para extraer SAMLToken en el cliente después de que se lleve a cabo la primera solicitud.

Cree un objeto Dispatch e invoque la solicitud:
javax.xml.ws.Dispatch dispatch = ...;dispatch.invoke();
Obtenga un contexto de respuesta y extraiga SAMLToken:
Map<String, Object> responseContext = dispatch.getResponseContext();
 				SAMLToken samlToken = 
       (SAMLToken ) responseContext.get(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
    SAMLTOKEN_OUT_MESSAGECONTEXT);

El código de ejemplo siguiente muestra cómo reutilizar SAMLToken para las solicitudes de servicios web posteriores.

El programa de cliente de servicios web crea una instancia de dispatch para invocar un servicio:
javax.xml.ws.Dispatch dispatch = ...;
El cliente de servicios web, a continuación, utiliza este código para pasar una SAMLToken al manejador de seguridad de servicios Web:
Map<String, Object> requestContext = dispatch.getRequestContext();
     requestContext.put(com.ibm.wsspi.wssecurity.saml.config.SamlConstants.
     SAMLTOKEN_IN_MESSAGECONTEXT, samlToken);           

El proveedor de servicios web (receptor) puede utilizar el código siguiente para extraer SAMLToken de una solicitud de servicios web de entrada.

Extraiga una SAMLToken del requestContext:
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) {
  		// Manejo de errores}
  
Extraiga los atributos SAML:
List<SAMLAttribute> allAttributes;
allAttributes = ((SAMLToken) samlToken).getSAMLAttributes();

El entorno de ejecución del cliente de servicios web puede almacenar en memoria caché la señal SAML. En las solicitudes de cliente posteriores dentro de la aplicación, el entorno de ejecución de seguridad recupera la señal SAML de la memoria caché para utilizarla con el destino.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_samlapipropagate
File name: cwbs_samlapipropagate.html