Anleitung – Einrichten von MS365 SSO via SAML

Konfigurieren von Azure Active Directory

Der erste Schritt zur Umstellung auf SSO-Anmeldung mit SAML in iAGENT ist die Einrichtung einer Unternehmensanwendung im Azure Active Directory. Die wichtigsten Schritte sind im folgenden Dokument beschrieben:

https://learning.postman.com/docs/administration/sso/saml-in-azure-ad/

Die Benutzer, die sich in iAGENT anmelden können sollen, müssen der neu erstellten Enterprise Application als Benutzer hinzugefügt werden.

Als Standard-Antwort-URL sollte die Index-Seite des Agenten verwendet werden. Diese URL wird nur verwendet, wenn die Authentifizierungsanfrage keine AssertionConsumerServiceURL liefert. Die Authentifizierungsanfrage von einem iAGENT-System liefert immer eine AssertionConsumerServiceURL.
Folgende URLs sollten als Antwort-URLs gesetzt werden:

  • Standard: https://<hostname>/agent/client/index.imail (Verwenden Sie index.jsp auf Entwicklersystemen. Die Standard-Antwort-URL darf keine Platzhalterzeichen enthalten)
  • https://<Hostname>/agent/*
  • https://<Hostname>/iMail/*

Die Platzhalter-URLs sind notwendig, um den iAGENT-Deeplink-Mechanismus zu unterstützen. Die Antwort-URL, die von der Authentifizierungsanfrage geliefert wird, kann eine beliebige gültige URL innerhalb eines iAGENT-Systems sein (um direkt eine bestimmte Ansicht zu öffnen).

Wenn Sie den Test-Button im Single-Sign-On Menü verwenden, sollten Sie auf die Login-Seite des iAGENT-Systems weitergeleitet werden. Bei diesem Test wird keine Anmeldung am iAGENT-System durchgeführt. Das Anzeigen der Anmeldeseite zeigt jedoch an, dass die Anfrage erfolgreich war.

Konfigurieren des iAGENT Systems

Zunächst einmal muss der Browser einen Internetzugang haben. Der Microsoft Login-Server (login.microsoftonline.com) muss erreichbar sein. Zusätzlich muss die SAML-Authentifizierung verfügbar sein (Projekt „ecom-saml-client“). Dazu müssen die notwendigen Bibliotheken bereitgestellt werden.

Hinzufügen der Abhängigkeiten in Eclipse

Um die benötigten Bibliotheken in einer Eclipse-Entwicklungsumgebung hinzuzufügen, muss die „build.custom.gradle“ der Projekte „ecom-iagent-eclipse-imail-agent“ und „ecom-iagent-eclipse-routing“ um folgende Abhängigkeit erweitert werden:

  • runtime ‚com.novomind.ecom:ecom-saml-client:11.15.1‘

Anschließend müssen der Routing-Server und der Agent-Server gestoppt und neu deployed werden.

Bibliotheken zu einem installierten iAGENT-System hinzufügen

Die für eine SSO-Authentifizierung notwendigen Bibliotheken sind im iAGENT-Updater unter folgendem Pfad zu finden:

  • common\standard\other\saml-client\lib\

Diese Bibliotheken müssen in folgende Verzeichnisse des installierten iAGENT-Systems kopiert werden:

  • <iAGENT-Installation>/tomcat/webappsiMail/iMail/WEB-INF/lib/ (Routing-Process)
  • <iAGENT-Installation>/tomcat/webappsiMailAgent/agent/WEB-INF/lib (SV-Process)

Anschließend müssen die Prozesse bzw. Dienste für das Routing und iAGENT neu gestartet werden.

Benutzer in iAGENT einrichten

Sie müssen im iAGENT-System Benutzer anlegen, die sich im Azure Active Directory befinden. Der Benutzername muss derselbe sein, der auch für die Anmeldung in Office365 verwendet wird (username@domain, zum Beispiel mmustermann@example.com). Zudem muss ein Admin-Benutzer angelegt werden, der sich mit SSO anmelden kann.

Bei Zugriffen mit System-Nutzern (wie von Apps oder REST API) muss am entsprechenden Nutzer zudem einer der folgenden Schlüssel auf den Wert DB gesetzt werden (Reiter Eigene Einstellungen in den Benutzereinstellungen):

  • auth.type (für die Anmeldung auf Supervisor und Desk)
  • auth.type.agent (für die Anmeldung auf Desk)
  • auth.type.user (für die Anmeldung auf Supervisor)

Konfigurieren der SSO-Authentifizierung

Laden Sie zunächst die Federation Metadata XML von Ihrer konfigurierten Unternehmensanwendung herunter. Fast alle benötigten Informationen finden Sie in der Beschreibung.
Die Konfiguration muss in die Routing.conf-Datei des iAGENT-Systems eingefügt werden. Die Konfiguration bezüglich des SSO-Logins kann im laufenden iAGENT-System geändert werden.

Eine Beispielkonfiguration, die in die Routing.conf eingefügt wird, sieht wie folgt aus:

####################
## Teams Saml SSO ##
####################
 
#Turn on/off authentication
external.auth.enabled = true
 
#Turn on/off authentication for agents
external.auth.agent.enabled = true
 
#Turn on/off authentication for supervisors
external.auth.routing.enabled = true
 
#Class implementing the authentication
external.auth.user.auth.class = com.novomind.ecom.saml.Authenticator
 
#Mapping of the received authentication properties to the username of the iAGENT-System. Without this maping an authentication will always fail. Make sure the received users are existing in the iAGENT-System.
external.auth.user.property.mapping = {username:"nameid"}
 
#Configuration of the actual authentication. In this case a saml authentication. The authentication has been defined by following parameter "external.auth.user.auth.class"
 
#Turn on/off saml authentication
external.auth.saml.enabled = true
 
#Name of the identity provider. In this case the Enterprise Application defined in the azure AD ("Azure AD Identifier"). This identifier will be used in the AuthRequest.
external.auth.saml.ip.identifier = https://sts.windows.net/bb3b64e1-cd0c-4d0c-a85b-fabcabfef245/
 
#URL the AuthRequest will be sent to. Can be found in the Single sign-on configuration of the Enterprise Application ("Login URL").
external.auth.saml.ip.endpoint = https://login.microsoftonline.com/bb3b64e1-cd0c-4d0c-a85b-fabcabfef245/saml2
 
#Name of the Service Provider. Has been defined in the Single sign-on configuration of the Enterprise Application ("Identifier (Entity ID)")
external.auth.saml.sp.identifier = https://novomind365.onmicrosoft.com/SSO
 
#Public key of the identity provider. Used for validating the signatures of the authentication response.
external.auth.saml.certificate.base64 = MIIC8DCCAdigAwIBAgIQX/61cnLjwoFEnlIiLnHL3DANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylNaWNyb3NvZnQgQXp1cmUgRmVkZXJhdGVkIFNTTyBDZXJ0aWZpY2F0ZTAeFw0yMDAzMjYxNTQ4MDBaFw0yMzAzMjYxNTQ4MDBaMDQxMjAwBgNVBAMTKU1pY3Jvc29mdCBBenVyZSBGZWRlcmF0ZWQgU1NPIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApaYHuJr1TB5NEEmuyTFRW54N6OyoNu7LuB3yVZEUspoxWX3SW1mzfJa1f4+WV9y9SXqehzxR1IdVUyubERmsSAVMBIBeEN/8fk17aTGi4+FaWH8S5OvYmI8V/HRXFcyJxXCCeY6pcRip7UEK4Y3AnNIAbEgxMNIx4LRemYtmYEOG2FD8Gjeu7C58VtOJsi5Z0AZHyK5rVed8Fm9qZBWr5NwOx500jTm1cAwdZS45+89l9nd6g1FNpNO58dExbiq1zbqs5UCcNyNP0Ga3k9ToL1QvFDNOQj7W/KTSwgCDhCN9WF3+889V2OUD0jcCUkBFH5iGsiFYJPSWK+6GoQQhjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAJG9VslGHELW6o/gz/nHaVDF1/XXfRXlGaf/knI1dCjwPRoywjaDb3hIYW7gdhnYrhjsgl4Aszy8+voLUnf73Jh7w8Izcvy6fl05h1IfhTr4oVvLtuPB6AP3qsfG2zFRkx1teJd/DlCv9AGjr2A2d3iUL1GexwB/zC34V4RDZmU1PlkuR/lUx4NC+LlKBhdYlf0Irl5O6g2DkzC3YB1/nwGcG5trsNdNsifl/8pJkJUnYKpD4DFgGGBZSrFmWaWmcCI8P0Mm2txMPa988KGWcbclP2AV26/q/nR2x45KDkZC4LFKQE1ahErD5m6/da1icKHICi/ldLfg49DMK++YcV
#Turn on/of validation of time based constraints in the authentication response. Validation time based constraints often leads to problems. Time based constraints will be ignored if set to true.
external.auth.saml.assertion.time.disable = true
 

Die folgenden Konfigurationseigenschaften müssen angepasst werden:

  • extern.auth.saml.sp.identifier
  • external.auth.saml.ip.identifier
  • external.auth.saml.ip.endpoint
  • external.auth.saml.certificate.base64
  • external.auth.show.login.mask

external.auth.saml.sp.identifier ist in der Single Sign-On-Konfiguration der Enterprise Application zu finden („Identifier (Entity ID)“).

external.auth.saml.ip.identifier ist in der Single-Sign-On-Konfiguration der Unternehmensanwendung zu finden („Azure AD Identifier“). Er kann auch in der Federation-Metadaten-Xml-Datei gefunden werden (Element „EntityDescriptor“ → Attribut „entityID“).

external.auth.saml.ip.endpoint ist in der Single Sign-On Konfiguration der Enterprise Application zu finden („Login URL“). Das folgende Element muss sich in der xml-Datei befinden. Normalerweise wird es irgendwo am Ende der Datei platziert.

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/bb3b64e1-cd0c-4d0c-a85b-fabcabfef245/saml2"/>

 

Der Wert des Attributs „Location“ muss als Wert verwendet werden.

Der Wert für die Eigenschaft external.auth.saml.certificate.base64 ist auch in den Verbands-Metadaten xml zu finden. Folgender Beispielinhalt enthält den erforderlichen öffentlichen Schlüssel im base64-Format. Kopieren Sie einfach den Textinhalt des Elements „X509Certificate“.

<KeyInfo>
      <X509Data>
        <X509Certificate>MIIC8DCCAdigAwIBAgIQX/61cnLjwoFEnlIiLnHL3DANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylNaWNyb3NvZnQgQXp1cmUgRmVkZXJhdGVkIFNTTyBDZXJ0aWZpY2F0ZTAeFw0yMDAzMjYxNTQ4MDBaFw0yMzAzMjYxNTQ4MDBaMDQxMjAwBgNVBAMTKU1pY3Jvc29mdCBBenVyZSBGZWRlcmF0ZWQgU1NPIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApaYHuJr1TB5NEEmuyTFRW54N6OyoNu7LuB3yVZEUspoxWX3SW1mzfJa1f4+WV9y9SXqehzxR1IdVUyubERmsSAVMBIBeEN/8fk17aTGi4+FaWH8S5OvYmI8V/HRXFcyJxXCCeY6pcRip7UEK4Y3AnNIAbEgxMNIx4LRemYtmYEOG2FD8Gjeu7C58VtOJsi5Z0AZHyK5rVed8Fm9qZBWr5NwOx500jTm1cAwdZS45+89l9nd6g1FNpNO58dExbiq1zbqs5UCcNyNP0Ga3k9ToL1QvFDNOQj7W/KTSwgCDhCN9WF3+889V2OUD0jcCUkBFH5iGsiFYJPSWK+6GoQQhjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAJG9VslGHELW6o/gz/nHaVDF1/XXfRXlGaf/knI1dCjwPRoywjaDb3hIYW7gdhnYrhjsgl4Aszy8+voLUnf73Jh7w8Izcvy6fl05h1IfhTr4oVvLtuPB6AP3qsfG2zFRkx1teJd/DlCv9AGjr2A2d3iUL1GexwB/zC34V4RDZmU1PlkuR/lUx4NC+LlKBhdYlf0Irl5O6g2DkzC3YB1/nwGcG5trsNdNsifl/8pJkJUnYKpD4DFgGGBZSrFmWaWmcCI8P0Mm2txMPa988KGWcbclP2AV26/q/nR2x45KDkZC4LFKQE1ahErD5m6/da1icKHICi/ldLfg49DMK++YcV
        </X509Certificate>
      </X509Data>
    </KeyInfo>

Indem external.auth.show.login.mask auf false gesetzt wird, wird die Login-Maske für iAGENT abgeschaltet.