Habilitación del inicio de sesión único (SSO) web iniciado por SAML SP

De forma predeterminada, el interceptor de asociación de confianza (TAI) de SAML de WebSphere Application Server da soporte al SSO iniciado por IdP. Cuando se aplica el código personalizado, el TAI de SAML puede configurarse para dar soporte al SSO iniciado por SP.

Antes de empezar

En esta tarea se presupone que ha habilitado el sistema para utilizar la característica de inicio de sesión único web SAML. Si todavía no lo ha hecho, consulte Habilitación del sistema para utilizar la característica de inicio de sesión único (SSO) web SAML.

Acerca de esta tarea

Esta tarea proporciona una clase de ejemplo y los pasos necesarios para configurar SSO iniciado por SP.

Procedimiento

  1. Desarrolle un proveedor de solicitudes de autenticación SAML que implemente la interfaz com.ibm.wsspi.security.web.saml.AuthnRequestProvider.
    El método getAuthnRequest(HttpServletRequest req, String errorMsg, String acsUrl, ArrayList<String> ssoUrls) debe devolver una correlación que incluya cuatro entradas con las claves siguientes:
    AuthnRequestProvider.SSO_URL
    El URL de inicio de sesión único del proveedor de identidad SAML.
    AuthnRequestProvider.RELAY_STATE
    relayState, tal como se define en el perfil de inicio de sesión único de navegador web SAML.
    AuthnRequestProvider.REQUEST_ID
    El valor de esta clave debe coincidir con el valor del atributo ID en el mensaje AuthnRequest.
    AuthnRequestProvider.AUTHN_REQUEST
    Un mensaje AuthnRequest codificado en Base64, tal como se define en la especificación. El código es responsable de generar el mensaje AuthnRequest.
                    public HashMap <String, String> getAuthnRequest(HttpServletRequest req, String errorMsg, 
    			   String acsUrl, ArrayList<String> ssoUrls)
    	        throws NotImplementedException {
    	   
    	        //crear la correlación con las claves siguientes
    	        HashMap <String, String> map = new HashMap <String, String>();
    	       
    	        String ssoUrl = "https://example.com/saml20/Login";
    	        map.put(AuthnRequestProvider.SSO_URL, ssoUrl);
    
    	        String relayState = generateRandom();
    	        map.put(AuthnRequestProvider.RELAY_STATE, relayState);
    
    	        String requestId = generateRandom();
    	        map.put(AuthnRequestProvider.REQUEST_ID, requestId);
    	        
    	        //crear AuthnRequest	        	
    	        String authnMessage = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
    				   +"<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" "
    				   +"ID=\""+requestID+"\" Version=\"2.0\" "
    				   + "IssueInstant=\"" +getUTC()+ "\" ForceAuthn=\"false\" IsPassive=\"false\""
    				   + "ProtocolBinding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" "
    				   + "AssertionConsumerServiceURL=\"" +acs+"\" "
    				   + "Destination=\"" +destination +"\"> "
    				   + "<saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">"
    				   + issuer
    				   +"</saml:Issuer> <samlp:NameIDPolicy"
    				   +"Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\""
    				   +"SPNameQualifier=\"mysp\""
    				   +"AllowCreate=\"true\" /> <samlp:RequestedAuthnContext Comparison=\"exact\"> "
    				   +"<saml:AuthnContextClassRef xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">"
    			         +"urn:oasis:names:tc:SAML:2.0:ac:classes:</samlp:RequestedAuthnContext> </samlp:AuthnRequest>";
    
    	        map.put(AuthnRequestProvider.AUTHN_REQUEST, authnMessage);
                    return map;
    	        }
  2. Añada un archivo jar que contenga su clase personalizada en el directorio (WAS_HOME)/lib/ext.
  3. Configure el TAI de SSO web SAML para que utilice el mensaje AuthnRequest.
    1. Inicie sesión en la consola administrativa de WebSphere Application Server.
    2. Pulse Seguridad > Seguridad global.
    3. Expanda Seguridad Web y SIP y pulse Asociación de confianza .
    4. Pulse Interceptores.
    5. Pulse com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor
    6. En Propiedades personalizadas, pulse Nueva y complete la siguiente información de propiedad personalizada, donde el id es el que ha asignado al proveedor de servicios (SP) SSO para el que desea aplicar esta propiedad:
      • Nombre: sso_<id>.sp.login.error.page
      • Valor: el nombre de clase de la implementación de AuthnRequestProvider personalizada.

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=tsec_enable_saml_sp_sso
File name: tsec_enable_saml_sp_sso.html