Activation de la connexion unique Web SAML initiée par SP

Par défaut, l'intercepteur de relations de confiance SAML WebSphere Application Server prend en charge la connexion unique initiée par IdP. Une fois le code personnalisé implémenté, l'intercepteur de relations de confiance SAML peut être configuré pour prendre en charge la connexion unique initiée par SP.

Avant de commencer

Cette tâche implique que vous ayez activé la fonction de connexion unique Web SAML sur votre système. Si vous ne l'avez pas encore fait, voir Activation de votre système pour l'utilisation de la connexion unique Web SAML.

Pourquoi et quand exécuter cette tâche

Cette tâche fournit un exemple de classe et décrit les étapes permettant de configurer une connexion unique initiée par SP.

Procédure

  1. Développez un fournisseur de requête d'authentification SAML qui implémente l'interface com.ibm.wsspi.security.web.saml.AuthnRequestProvider.
    La méthode getAuthnRequest(HttpServletRequest req, String errorMsg, String acsUrl, ArrayList<String> ssoUrls) doit renvoyer une mappe qui inclut quatre entrées avec les clés suivantes :
    AuthnRequestProvider.SSO_URL
    URL de connexion unique du fournisseur d'identité SAML.
    AuthnRequestProvider.RELAY_STATE
    relayState, tel qu'il est défini par le profil de connexion unique de navigateur Web SAML.
    AuthnRequestProvider.REQUEST_ID
    La valeur de cette clé doit correspondre à la valeur de l'attribut d'ID définie dans le message AuthnRequest.
    AuthnRequestProvider.AUTHN_REQUEST
    Message AuthnRequest codé en base 64 conformément à la définition dans la spécification. Votre code est chargé de générer le message AuthnRequest.
                    public HashMap <String, String> getAuthnRequest(HttpServletRequest req, String errorMsg, 
    			   String acsUrl, ArrayList<String> ssoUrls)
    	        throws NotImplementedException {
    	   
    	        //créer une mappe avec les clés suivantes :
    	        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);
    	        
    	        //créer 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. Placez un fichier jar contenant votre classe personnalisée dans le répertoire (WAS_HOME)/lib/ext.
  3. Configurez l'intercepteur de relations de confiance de connexion unique Web SAML pour qu'il utilise votre message AuthnRequest.
    1. Ouvrez une session de console d'administration WebSphere Application Server.
    2. Cliquez sur Sécurité > Sécurité globale.
    3. Développez Web et sécurité SIP, puis cliquez sur Relation de confiance.
    4. Cliquez sur Intercepteurs.
    5. Cliquez sur com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor
    6. Pour Propriétés personnalisées, cliquez sur Nouveau, puis indiquez les informations de propriété personnalisée suivantes, où id est l'ID que vous avez affecté au fournisseur de services de connexion unique auquel cette propriété doit s'appliquer :
      • Nom : sso_<id>.sp.login.error.page
      • Valeur : Nom de classe de votre implémentation AuthnRequestProvider personnalisée.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_enable_saml_sp_sso
Nom du fichier : tsec_enable_saml_sp_sso.html