Vom SP eingeleitetes SAML-SSO aktivieren

Standardmäßig unterstützt der WebSphere Application Server-SAML-TAI (Trust Association Interceptor) das vom IdP eingeleitete SSO (Single Sign-On). Wenn Sie angepassten Code verwenden, kann der SAML-TAI so konfiguriert werden, dass er das vom SP eingeleitetes SSO verwendet.

Vorbereitende Schritte

Diese Task setzt voraus, dass das System SAML-Web-SSO-Feature verwenden kann. Wenn dies nicht der Fall ist, führen Sie die Anweisungen unter System für die Verwendung des SAML-Web-SSO-Features aktivieren aus.

Informationen zu diesem Vorgang

Diese Task stellt eine Beispielklasse bereit und Schritte zum Konfigurieren des von SP eingeleiteten SSO.

Vorgehensweise

  1. Entwickeln Sie einen SAML-Authentifizierungsanforderungsprovider, der die Schnittstelle com.ibm.wsspi.security.web.saml.AuthnRequestProvider verwendet.
    Die Methode getAuthnRequest(HttpServletRequest req, String errorMsg, String acsUrl, ArrayList<String> ssoUrls) muss eine Zuordnung zurückgeben, die vier Einträge für die folgenden Schlüssel enthält:
    AuthnRequestProvider.SSO_URL
    Der Single Sign-on-URL des SAML-Identitätsproviders.
    AuthnRequestProvider.RELAY_STATE
    Der im Single Sign-on-Profil des SAML-Web-Browsers definierte relayState.
    AuthnRequestProvider.REQUEST_ID
    Der Wert für diesen Schlüssel muss mit dem Wert des ID-Attributs in der AuthnRequest-Nachricht übereinstimmen.
    AuthnRequestProvider.AUTHN_REQUEST
    Eine Base64-codierte AuthnRequest-Nachricht gemäß der Definition in der Spezifikation. Ihr Code ist verantwortlich für das Generieren der AuthnRequest-Nachricht.
                    public HashMap <String, String> getAuthnRequest(HttpServletRequest req, String errorMsg, 
    			   String acsUrl, ArrayList<String> ssoUrls)
    	        throws NotImplementedException {
    	   
    	        //Map mit den folgenden Schlüsseln erstellen
    	        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);
    	        
    	        //AuthnRequest erstellen
    	        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. Stellen Sie eine jar-Datei, die Ihre angepasste Klasse enthält, in das Verzeichnis (WAS_HOME)/lib/ext.
  3. Konfigurieren Sie den SAML-Web-SSO-TAI so, dass er Ihre AuthnRequest-Nachricht verwendet.
    1. Melden Sie sich an der Administrationskonsole von WebSphere Application Server an.
    2. Klicken Sie auf Sicherheit > Globale Sicherheit.
    3. Klicken Sie unter Web- und SIP-Sicherheit auf Trust Association.
    4. Klicken Sie auf Interceptor.
    5. Klicken Sie auf com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor
    6. Klicken Sie für Angepasste Eigenschaften auf Neu und geben Sie die folgenden Informationen für angepasste Eigenschaft an, wobei id für die ID steht, die Sie dem SSO-SP (Service-Provider) zugeordnet haben, für den diese Eigenschaft gelten soll:
      • Name: sso_<id>.sp.login.error.page
      • Wert: Der Klassenname der angepassten Implementierung von AuthnRequestProvider.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_enable_saml_sp_sso
Dateiname:tsec_enable_saml_sp_sso.html