Solicitud de señales holder-of-key de SAML con clave asimé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 sujetos holder-of-key con una clave pública en un certificado x.509 con el modelo de programación JAX-WS (API de Java™ para servicios web XML) y las API de WSS (seguridad de servicios web).

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 autoemitidas con clave asimétrica mediante 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 la información sobre solicitud de señales SAML bearer desde un STS externo, que puede propagar mediante las API de WSS con protección a nivel de transporte.
  • Familiarizarse 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 con el método de confirmación de sujetos holder-of-key y la clave pública incorporada en un certificado x.509 utilizando las API de WSS, desde un STS externo. Esta tarea se centra en el envío de un certificado X.509 a un STS externo cuando se solicitan señales holder-of-key de SAML.

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");
    cbackMap1.put(SamlConstants.SAML_APPLIES_TO, "http://myhost:9080/myService");
    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 el método de confirmación de sujetos holder-of-key, debe especificar si se incluye una clave pública o una clave simétrica en las señales SAML. En este ejemplo se especifica un tipo de clave pública. A continuación, especifica la ubicación de un certificado que contiene la clave pública y la ubicación de la correspondiente clave privada para que el remitente firme digitalmente los elementos de mensajes SOAP con el fin de satisfacer los requisitos de confirmación de sujetos holder-of-key.

  2. Especifique la ubicación de un certificado X.509 para incluir en las señales SAML y una clave privada correspondiente para utilizarla para firmar digitalmente los elementos de mensajes; por ejemplo:
    cbackMap1.put(SamlConstants.KEY_TYPE,
                  "http://docs.oasis-open.org/ws-sx/ws-trust/200512/PublicKey");
    cbackMap1.put(SamlConstants.KEY_ALIAS, "soapinitiator" );
    cbackMap1.put(SamlConstants.KEY_NAME, "CN=SOAPInitator, O=Example");
    cbackMap1.put(SamlConstants.KEY_PASSWORD, "myinitatkeypass");
    cbackMap1.put(SamlConstants.KEY_STORE_PATH, "keystores/initiator.jceks");
    cbackMap1.put(SamlConstants.KEY_STORE_PASSWORD, "myinitatstorepass");
    cbackMap1.put(SamlConstants.KEY_STORE_TYPE, "jceks");
    
    SAMLGenerateCallbackHandler cbHandler1 = new SAMLGenerateCallbackHandler(cbackMap1);
    cbHandler1.setWSSConsumingContextForTrustClient(concont1);
    cbHandler1.setWSSGenerationContextForTrustClient(gencont1);
    
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class,
                                                       cbHandler1, "system.wss.generate.saml");

    El certificado X.509 especificado se envía en solicitudes WS-Trust al STS externo en el elemento trust:UseKey. Para obtener más información sobre las aserciones SAML definidas en el perfil de señales SAML estándar. SSL se utiliza para proteger la integridad y la confidencialidad de los mensajes de solicitud y respuesta de WS-Trust en este ejemplo.

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 asimé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, familiarícese con 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_asymmetric_sts_client
File name: twbs_configsamlhok_asymmetric_sts_client.html