Solicitud de señales holder-of-key SAML con clave simétrica desde el servicio de señales de seguridad externo utilizando las API de WSS

Puede solicitar un servicio de señales de seguridad (STS) externo para emitir las señales SAML con el método de confirmación de sujeto holder-of-key con la clave simétrica que está cifrada para un servicio de destino. Utilice el modelo de programación API de Java™ para XML (JAX-WS) y las API de seguridad de servicios Web (WSS) para completar esta tarea.

Antes de empezar

En esta tarea se presupone que está familiarizado con el modelo de programación JAX-WS, las interfaces de las API de WSS, los conceptos de SAML y el uso de conjuntos de políticas para configurar y administrar los valores de servicios web. Complete las acciones siguientes antes de iniciar esta tarea:
  • Consulte información sobre propagación de señales holder-of-key SAML con clave simétrica utilizando las API de WSS.
  • Familiarícese con el uso de materiales clave incluidos en las señales SAML para la protección de mensajes utilizando las API de WSS. El caso de ejemplo requiere solicitar señales SAML de un STS externo en lugar de utilizar las señales SAML autoemitidas.
  • Consulte la información sobre solicitud de señales SAML sender-vouches desde un STS externo para propagar mediante las API de WSS con protección a nivel de mensaje.
  • Consulte la información sobre solicitud de señales SAML sender-vouches desde un STS externo para propagar mediante las API de WSS con protección a nivel de transporte.
  • Consulte información sobre solicitud de señales de transporte SAML desde un STS externo para propagarlas utilizando las API de WSS con protección a nivel de transporte.
  • Familiarícese con el acceso a un STS externo utilizando las API de WSS.

Acerca de esta tarea

Esta tarea muestra el código de ejemplo para solicitar las señales SAML desde un STS externo, con el método de confirmación de sujeto holder-on-key y la clave simétrica incluida que está cifrada para el servicio de destino mediante las API de WSS. Esta tarea se centra en enviar un mensaje de solicitud WS-Trust a un STS externo para solicitar señales SAML holder-of-key con claves simétricas.

Procedimiento

  1. Especifique un STS desde el que solicitar una señal de seguridad SAML que contiene el método de confirmación de sujetos holder-of-key; por ejemplo:
    com.ibm.websphere.wssecurity.wssapi.WSSFactory factory =
        com.ibm.websphere.wssecurity.wssapi.WSSFactory.getInstance();
    WSSGenerationContext gencont1 = factory.newWSSGenerationContext();
    WSSConsumingContext concont1 = factory.newWSSConsumingContext();
    HashMap<Object, Object> cbackMap1 = new HashMap<Object, Object>();
    cbackMap1.put(SamlConstants.STS_ADDRESS, "https://www.example.com/sts");  //URL del STS
    cbackMap1.put(SamlConstants.SAML_APPLIES_TO, "http://myhost:9080/myService");  //Servicio de destino
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_SOAP_VERSION, "1.1");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_WSTRUST_NAMESPACE,
                      "http://docs.oasis-open.org/ws-sx/ws-trust/200512"); 
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_COLLECTION_REQUEST,
                  "true");   //RST o RSTC
    cbackMap1.put(SamlConstants.TOKEN_TYPE,
                  "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
    cbackMap1.put(SamlConstants.CONFIRMATION_METHOD, "holder-of-key");

    Para solicitar una señal de seguridad SAML holder-of-key del STS, debe especificar si se va a incluir una clave simétrica o una clave pública por medio de un elemento KeyType en una solicitud de confianza. Este ejemplo requiere un tipo de clave simétrica como se muestra en el paso siguiente.

  2. Especifique la clave simétrica que se va a incluir en las señales de seguridad SAML; por ejemplo:
    cbackMap1.put(SamlConstants.KEY_TYPE,
                 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey");
    
    SAMLGenerateCallbackHandler cbHandler1 = new SAMLGenerateCallbackHandler(cbackMap1);
    cbHandler1.setWSSConsumingContextForTrustClient(concont1);
    cbHandler1.setWSSGenerationContextForTrustClient(gencont1);
    
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, 
                                                       cbHandler1, "system.wss.generate.saml");
    La señal SAML solicitada contiene una clave simétrica que está cifrada para el servicio de destino. El STS también devuelve el cifrado de claves simétricas a través del elemento WS-Trust RequestedProofToken. Consideremos el ejemplo siguiente.
    <wst:RequestedProofToken>
        <wst:BinarySecret
          xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
          wsu:Id="_27325D34CE4BCC83141288966548620">n68rFQba+XTZLNBfEc4prg==</wst:BinarySecret>
    </wst:RequestedProofToken>

    El elemento RequestedProofToken se muestra aquí a modo informativo. El proceso detallado no se expone a los usuarios de las API de WSS. El entorno de ejecución de seguridad de servicios Web o más precisamente el elemento SAMLGenerateLoginModule que se especifica en la configuración de inicio de sesión JAAS system.wss.geenrate.saml manejan el elemento RequestedProofToken y la clave simétrica.

Resultados

Ha obtenido información sobre los bloques de creación clave para solicitar las señales SAML con el método de confirmación de sujetos holder-of-key y la clave simétrica de un STS externo mediante las API de WSS. Para utilizar la señal SAML con el fin de firmar los mensajes de solicitud, revise el código de ejemplo del tema "Propagación de señales holder-of-key SAML autoemitidas con clave asimétrica mediante las API de WSS".


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_configsamlhok_symmetric_sts_client
File name: twbs_configsamlhok_symmetric_sts_client.html