Propagación de señales SAML

Puede utilizar varios métodos de propagación de señales SAML para incluir señales SAML en mensajes de servicios web de salida.

Acerca de esta tarea

Un cliente de servicios web puede incluir dos tipos de señales en los mensajes de servicios web de salida:
  • Las señales SAML originales que el cliente ha recibido de los mensajes de servicios web de entrada
  • Las señales SAML autoemitidas nuevas.
Se pueden generar señales SAML nuevas con atributos de las señales SAML originales o con atributos del nombre de usuario WSPrincipal en el sujeto RunAs. La configuración de política de servicios web determina las señales SAML que se propagarán. Puede alterar temporalmente la configuración de política insertando mediante programación señales SAML que desee propagar en el objeto Axis2 RequestContext.

Hay habilitados cuatro métodos de propagación. En esta tabla se resumen los métodos de propagación y las opciones de enlace asociadas:

Tabla 1. Métodos de propagación y opciones de enlace asociadas. Utilice la propagación para incluir señales SAML en los mensajes de servicios web.
Método de propagación de señales SAML Opción de enlace Detalles de implementación
Propagar la señal SAML original. La opción de enlace tokenRequest se establece en el valor, propagation. Envía la señal SAML original desde el servidor donde se ha recibido la señal a otros servidores con WS-Security.
Propague el nombre de seguridad del usuario, el nombre exclusivo de seguridad, los ID de grupo y el nombre del reino de seguridad. La opción de enlace tokenRequest se establece en el valor issueByWSCredential. Altera temporalmente la implementación predeterminada del sistema.

La señal SAML autoemitida contiene el nombre de seguridad de usuario, el nombre de seguridad de usuario exclusivo, los ID de grupo y el nombre de reino de seguridad que se han especificado mediante el objeto WSCredential en el contexto de seguridad del usuario.

Propagar la identidad de señal SAML y los atributos. No se establece ninguna opción de enlace. Implementación del sistema predeterminada.

El servidor autogenera una señal SAML nueva que contiene los atributos SAML originales, el método de autenticación y NameIdentifier o SAML NameID y envía la señal SAML autogenerada a los servidores en sentido descendente mediante WS-Security. Las propiedades de configuración del proveedor SAML determinan el nuevo nombre del emisor de señales SAML, el certificado de firma de emisor y la duración.

Propagar el WSPrincipal. La opción de enlace tokenRequest se establece en el valor, issueByWSPrincipal.
Nota: A partir de la versión 8, especificar el valor issueByWSPrincipal o issueByWSCredential tiene el mismo resultado. Si aún no está utilizando el valor issueByWSPrincipal, es aconsejable utilizar el valor issueByWSCredential. Si ya está utilizando el valor issueByWSPrincipal, es aconsejable sustituirlo por el valor issueByWSCredential.
Altera temporalmente la implementación del sistema predeterminada.

La señal SAML autoemitida contiene la información de WSPrincipal en el sujeto RunAs. La información se almacena como NameIdentity o NameID sin copiar nada de la señal SAML original, aunque el símbolo exista en el sujeto.

Propagar mediante programación una señal SAML preexistente. Inserte la señal SAML que desea propagar en el RequestContext utilizando la propiedad com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SEÑAL_SAML_EN_CONTEXTO_MENSAJES. Altera temporalmente las demás opciones de enlace existentes.

Procedimiento

  1. Propague la señal SAML original estableciendo la opción de enlace tokenRequest en el valor propagation en el archivo bindings.xml, como se muestra en los pasos. Este método envía la señal SAML original a los demás servidores mediante WS-Security. Para que la propagación se realice correctamente, debe haber una señal SAML válida en el sujeto RunAs. El servidor extrae la señal SAML del sujeto RunAs en el contexto de seguridad actual y valida las condiciones siguientes. Si una de estas condiciones es válida, el entorno de tiempo de ejecución WS-Security no propaga la señal SAML y la solicitud de propagación falla.
    • La señal SAML no ha caducado y la hora de caducidad se establece dentro de la ventana de tiempo del valor notOnOrAfter.
    • El valor ConfirmationMethod de la señal SAML es el mismo que la opción de enlace confirmationMethod definida en la configuración del generador de enlaces.
    • La señal ValueType de la señal SAML coincide con el ValueType de la configuración del generador de señales.

    Lleve a cabo estos pasos para establecer el valor correcto para la opción de enlace tokenRequest. Este procedimiento presupone que se despliega una aplicación de cliente de servicios web denominada JaxWSServicesSamples y que el enlace de ejemplo Saml Bearer Client está conectado.

    1. Pulse Aplicaciones > Tipos de aplicación > WebSphere enterprise Applications > JaxWSServicesSamples > Conjuntos de políticas y enlaces del cliente de servicios > Ejemplo de cliente de titularidad SAML > WS-Security > Autenticación y protección.
    2. Pulse gen_saml11token en la tabla Señales de autenticación.
    3. Pulse Manejador de retorno de llamada.
    4. Añada la propiedad personalizada tokenRequest y establezca el valor de la propiedad en propagation.
  2. Para propagar la identidad de señal SAML y los atributos mediante una señal SAML autoemisora, modifique el tokenGenerator de salida en el archivo bindings.xml. Este método envía los atributos SAML originales, NameIdentifier o NameID, y el método de autenticación de la señal SAML original a otros servidores mediante WS-Security. Si no hay ninguna señal SAML en el sujeto, el servidor utiliza WSPrincipal, almacenado como NameIdentifier o NameID, para crear una señal SAML autoemitida. Este método de propagación es la implementación del sistema predeterminada. En este método, la opción de enlace no está definida.
    Las limitaciones siguientes se aplican al archivo bindings.xml cuando se utiliza este método de propagación:
    • No establezca la opción de enlace tokenRequest en el archivo bindings.xml.
    • No establezca la opción de enlace stsURI en el archivo bindings.xml o establezca la opción en este valor: www.websphere.ibm.com/SAML/Issuer/Self.
  3. Para propagar el WSPrincipal, modifique el archivo bindings.xml como se muestra en los pasos. Establezca la opción de enlace tokenRequest en el valor issueByPrincipal en el archivo bindings.xml. Con este método, la señal SAML autoemitida siempre se basa en el WSPrincipal, aunque haya una señal SAML en el sujeto. La señal SAML nueva contiene el nombre de usuario WSPrincipal como NameId o NameIdentifier. La señal no contiene ningún otro atributo en los objetos WSPrincipal o WSCredential.
    La limitación siguiente se aplican al archivo bindings.xml cuando se utiliza este método de propagación:
    • No establezca la opción de enlace stsURI en el archivo bindings.xml o establezca la opción en el valor www.websphere.ibm.com/SAML/Issuer/Self.

    Lleve a cabo estos pasos para establecer el valor correcto para la opción de enlace tokenRequest. Este procedimiento presupone que se despliega una aplicación de cliente de servicios web denominada JaxWSServicesSamples y que el enlace de ejemplo Saml Bearer Client está conectado.

    1. Pulse Aplicaciones > Tipos de aplicación > WebSphere enterprise Applications > JaxWSServicesSamples > Conjuntos de políticas y enlaces del cliente de servicios > Ejemplo de cliente de titularidad SAML > WS-Security > Autenticación y protección.
    2. Pulse gen_saml11token en la tabla Señales de autenticación.
    3. Pulse Manejador de retorno de llamada.
    4. Añada la propiedad personalizada tokenRequest y establezca el valor de la propiedad en issueByPrincipal.
  4. Para propagar una señal SAML preexistente insertando SAMLToken en el RequestContext, siga estos pasos. Utilice este método para enviar una señal SAML que haya creado a los servidores en sentido descendente mediante WS-Security. La propagación se desencadena automáticamente si el tiempo de ejecución de WS-Security detecta una señal SAML en el RequestContext. La señal preexistente altera temporalmente las demás opciones de enlace existentes. Para utilizar este método de propagación guarde la señal SAML existente en el RequestContext especificando com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SEÑAL_SAML_EN_CONTEXTO_MENSAJES como clave, tal como se muestra en los pasos.
    1. Genere una señal SAML utilizando el método SAMLToken samlToken = <tipo de señal>, por ejemplo:
      SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    2. Guarde la SAMLToken en el RequestContext, por ejemplo:
      Map requestContext = ((BindingProvider)port).getRequestContext();
         requestContext.put("com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SEÑAL_SAML_EN_CONTEXTO_MENSAJES", samlToken );
    Esta opción de propagación puede coexistir con otros métodos de propagación y altera los demás métodos. Si la señal SAML del RequestContext ha caducado o la hora de caducidad de la señal es anterior a la hora actual más el margen de memoria caché, el entorno de ejecución de WS-Security ignora la señal SAML y utiliza uno de los otros tres métodos de propagación que hay configurados en el archivo binding.xml. Para evitar el uso de los otros tres métodos de propagación, añada la opción de enlace siguiente a las propiedades personalizadas bajo el manejador de retorno de llamada en la configuración de TokenGenerator: failOverToTokenRequest = false.
  5. Para propagar las pertenencias a grupos de un usuario, el nombre exclusivo de seguridad y el nombre de reino que hay en el objeto com.ibm.websphere.security.cred.WSCredential, modifique el archivo bindings.xml como se indica en los pasos siguientes. Establezca la opción de enlace tokenRequest en el valor issueByWSCredential, en el archivo bindings.xml. Con este método, la señal SAML de emisión automática siempre se basa en WSCredential aunque haya una señal SAML en el sujeto.

    La nueva señal SAML 1.1 contiene estas aserciones:

    • El elemento NameIdentifier contiene el valor de SecurityName de WSCredential con el elemento NameQualifier establecido con el nombre de reino de WSCredential. El SecurityName se obtiene con una llamada al método WSCredential.getSecurityName(). El nombre de reino se obtiene con una llamada al método WSCredential.getRealmName().
    • Todos los atributos tienen un AttributeNamespace establecido en com.ibm.websphere.security.cred.WSCredential como el valor.
    • El atributo GroupIds contiene todos los nombres de los grupos a los que pertenece un usuario. Los nombres de grupo se obtienen con una llamada al método WSCredential.getGroupIds().
    • El atributo UniqueSecurityName contiene el nombre exclusivo de seguridad, que se obtiene con una llamada al método WSCredential.getUniqueSecurityName().
    • Opcionalmente, puede confirmar el nombre de reino de WSCredential añadiendo la propiedad personalizada includeRealmName=true en el manejador de retorno de llamada.

    La nueva señal SAML 2.0 contiene las aserciones siguientes:

    • El elemento NameID contiene el valor de SecurityName de WSCredential con el elemento NameQualifier establecido con el nombre de reino de WSCredential. El SecurityName se obtiene con una llamada al método WSCredential.getSecurityName(). El nombre de reino se obtiene con una llamada al método WSCredential.getRealmName().
    • Todos los atributos tienen un NameFormat establecido en com.ibm.websphere.security.cred.WSCredential como el valor.
    • El atributo GroupIds contiene todos los nombres de los grupos a los que pertenece un usuario. Los nombres de grupo se obtienen con una llamada al método WSCredential.getGroupIds().
    • El atributo UniqueSecurityName contiene el nombre exclusivo de seguridad, que se obtiene con una llamada al método WSCredential.getUniqueSecurityName().
    • Opcionalmente, puede confirmar el nombre de reino de WSCredential añadiendo la propiedad personalizada includeRealmName=true en el manejador de retorno de llamada.
    Se aplica la limitación siguiente al archivo bindings.xml cuando se utiliza el método de propagación.
    • No establezca la opción de enlace stsURI en el archivo bindings.xml.
    Lleve a cabo estos pasos para establecer el valor correcto para la opción de enlace tokenRequest. En este procedimiento se presupone que se despliega una aplicación cliente de servicios Web denominada JaxWSServicesSamples y que se ha adjuntado el enlace Saml Bearer Client sample.
    1. Pulse Aplicaciones > Tipos de aplicación > WebSphere enterprise Applications > JaxWSServicesSamples > Conjuntos de políticas y enlaces del cliente de servicios > Ejemplo de cliente de titularidad SAML > WS-Security > Autenticación y protección
    2. Pulse gen_saml11token en la tabla Señales de autenticación.
    3. Pulse Manejador de retorno de llamada.
    4. Añada la propiedad personalizada tokenRequest y establezca el valor de la propiedad en issueByWSCredential.
    El ejemplo siguiente ilustra las sentencias NameIdentifier y Attribute de una aserción SAML 1.1 de emisión automática basada en WSCredential.
    <saml:AttributeStatement>
        <saml:Subject>
            <saml:NameIdentifier NameQualifier="ldap.acme.com:9080">uid=alice,dc=acme,dc=com</saml:NameIdentifier>
            <saml:SubjectConfirmation>
                <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="UniqueSecurityName" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>uid=alice,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>    <saml:Attribute AttributeName="GroupIds" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>cn=development,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=deployment,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=test,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute></saml:AttributeStatement>
    En el ejemplo siguiente se muestran la sentencia NameID y Attribute de una aserción SAML 2.0 autoemitida basándose en WSCredential.
    <saml2:AttributeStatement>
        <saml2:Attribute Name="UniqueSecurityName"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>uid=alice,dc=acme,dc=com</saml2:AttributeValue>
        <saml2:Attribute>
        <saml2:Attribute AttributeName="GroupIds"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>cn=development,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=deployment,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=test,dc=acme,dc=com</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
    <saml2:NameID NameQualifier="ldap.acme.com:9060">alice</saml2:NameID>

Icon that indicates the type of topic Task topic



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