Citrix ADC als initial IdP für Office365

Citrix ADC Version 12 initial IdP Office365

In diesem Beitrag geht es darum eine SAML Authentifizierung für Office365, über den Citrix ADC (Version 12) einzurichten. Hierbei dient der Citrix ADC als IdP und Office365 als SP. Damit man nicht hundert Mal seinen Benutzernamen eingeben muss, wird dies durch ein initial IdP unterbunden (SSO).

Begriffserklärung

Kurz die wichtigen kommenden Begriffe erläutert.

SAML

SAML (Security Assertion Markup Language) bietet eine gemeinsame Plattform, zum webbasierten Zugriff auf mehrere, autonome Services, ohne zu einer mehrmaligen Eingabe der Zugangsdaten gezwungen zu sein. Die Authentifizierung erfolgt, über ein verschlüsseltes Session-Cookie, transparent im Hintergrund. Dieses Session-Cookie, das mit einem Ablaufdatum versehen ist, erhält der Anwender im Browser von einem Authentifizierungsdienst (Identity Provider – IdP) und kann damit dann anschließend im Browser alle angebundenen Services (Service Provider – SP) nutzen.

Principal

Als Principal wird der eigentliche Anwender bezeichnet, der sich über den Browser authentifiziert.

Identity Provider (IdP)

Der Identity Provider ist der Authentifizierungsdienst, der eine Anmeldemaske für den Anwender bereitstellt und anschließend den Principal zum Service Provider weiterleitet.

SingleSignOnService

Der SingleSignOnService ist eine URL, die der Anmeldung am Identity Provider dient. Der Identity Provider bietet hier eine Anmeldemaske zur Authentifizierung an. Es kann Benutzername und Passwort sein, es kann aber auch eine andere Form der Authentifizierung inklusive Mehrfaktor-Authentifizierung gefordert sein. Dieser Link muss bei allen angebundenen Services (SP) eingetragen werden.

SingleLogoutService

Die SingleLogoutService URL dient der Abmeldung vom IdP. Wenn sich ein Principal von einem Service abmeldet, sollte er an diesen Endpoint des Identity Providers weitergeleitet werden, damit auch dieser den Anwender abmelden kann. Dieser Link kann bei allen angebundenen Service Provider eingetragen werden.

Öffentliches Zertifikat

Der Identity Provider bietet ein öffentliches Zertifikat an, womit der Service Provider die saml:authnRequest signiert. Daher muss dieses Zertifikat allen angebundenen Services zur Verfügung gestellt werden.

Metadatendatei

Eine XML-Datei die vom Identity Provider zur Verfügung gestellt wird. Diese Datei enthält die oben genannten Inhalte (SingleSignOnService URL, SingleLogoutService URL, Öffentliches Zertifikat). Diese Datei kann allen angebundenen Services zur Verfügung gestellt werden.

Service Provider (SP)

Der Service Provider (z.B. Office365) bietet Services an, die eine Authentifizierung erfordern. Diese Authentifizierung übernimmt er jedoch nicht selbst, sondern leitet diese transparent an den Identity Provider weiter.

AssertionConsumerService

Diese URL spezifiziert den Ort, an dem der Anwender wieder zurückgeleitet werden soll, nachdem er sich authentifiziert hat. Dieser Link muss beim Identity Provider eingetragen werden.

SingleLogoutService

Die SingleLogoutService URL dient der Abmeldung der weiteren angebundenen Services, wenn der Anwender von einem Service abgemeldet wurde. Das bedeutet, der Identity Provider schickt einen Logout Request an Service 1, sobald sich der Anwender an Service 2 abgemeldet hat. Voraussetzung dafür ist, dass die SingleLogoutService URL vorab beim Identity Provider für Service 1 eingetragen wurde.

Ablauf einer SAML Authentifizierung

  1. Der User greift per URL auf eine Ressource eines Service Providers zu (z.B. https://portal.office.com)
  2. Der Service Provider leitet den nicht authentifizierten User per saml:authnRequest an den Identity Provider weiter.
  3. Der Identity Provider verweist auf seine SingleSignOnService URL (z.B. https://auth.deyda.net/saml/login) und der User muss sich authentifizieren.
  4. Der IdP prüft die eingegebenen Daten gegen die User Database (z.B. Active Directory).
  5. Und sendet eine Meldung über die erfolgreiche Überprüfung an den IdP.
  6. Der IdP sendet eine saml:response in Form eines XHTML Formulars zurück an den SP. Dieses XHTML Formular enthält unter anderem die AssertionConsumerService URL die automatisch für den User geöffnet wird.
SAML-Authentifizierung

Einrichtung SAML Authentifizierung

Ich gehe in meiner Anleitung von einer SAML Authentifizierung zwischen dem Citrix ADC (ehemals NetScaler) Version 12 und Office365 aus.

Voraussetzungen

Ich setze die folgenden Dinge voraus und gehe nicht im Detail auf diese ein:

  • Citrix ADC mit erfolgreicher Basis Konfiguration und eingespielter Enterprise oder Platinum Lizenz
  • Interne und externe DNS Einträge für AAA-vServer (z.B. auth.deyda.net) und Unified Gateway-vServer (z.B. citrix.deyda.net)
  • Zertifikate für die DNS Einträge (Wildcard Zertifikate sind am einfachsten)
  • Konfigurierter Unified Gateway-vServer
  • Vorhandene Office365 Subskription mit Basis Konfiguration (Domäne, AAD Sync)

Citrix ADC

Als erstes erstellt ihr einen Authentication LDAP Server, sowie eine LDAP Policy für die Verbindung mit eurer lokalen AD. Ihr könnt natürlich auch einen vorhandenen LDAP Server um die benötigten Parameter erweitern.

  • Im Citrix ADC Navigation Panel auf NetScaler Gateway > Policies > Authentication > LDAP klicken
  • Im Reiter Policies auf Add klicken, um eine neue LDAP Policy zu erzeugen
  • Gebt dieser Policy einen Namen (z.B. Office365_LDAP_SSO_Policy) und klickt neben dem Dropdown Menü Server auf Add, um einen neuen Server zu erzeugen (Alternativ wählt euren vorhandenen Server aus und geht auf Edit um ihn anzupassen)
Configure Authentication LDAP Policy
  • Im folgenden Fenster erstellt ihr den LDAP Server:
    • Name (z.B. Office365_LDAP_SSO_Server)
    • Server IP (Ausgewählt)
    • IP Address (interner Active Directory Server)
    • Base DN (OU eurer Benutzer Accounts)
    • Administrator Bind DN (FQDN eines Administrativen Accounts)
    • Administrator Password / Confirm Administrator Password (Passwort des Administrativen Accounts)
    • Test LDAP Reachability (Bei konfigurierten Connection Settings kann hier Testweise eine Verbindung zur AD aufgebaut werden)
Configure Authentication LDAP Server
  • Unter Other Settings:
    • Server Logon Name Attribute (sAMAccountName)
    • Group Attribute (memberOf)
    • Sub Attribute Name (cn)
    • SSO Name Attribute (UserPrincipalName)
    • Email (mail)
    • User Required (Ausgewählt)
    • Referrals (Ausgewählt)
Configure Authentication LDAP Server Other Settings
  • Klickt auf More um die Ansicht zu erweitern
    • Attribute 1 (mail)
    • Attribute 2 (objectGUID)
Configure Authentication LDAP Policy Attribute Fields
  • Über Create die Einstellung des LDAP Servers abschließen
  • Im Fenster Create Authentication LDAP Policy den gerade erstellten/editieren LDAP Server auswählen
  • Unter Expression NS_TRUE eintragen
Create Authentication LDAP Policy
  • Über Create die Erstellung der LDAP Policy abschließen

Danach wird die eigentliche SAML Authentifizierung (Identity Provider) eingerichtet.

  • Hierfür navigieren wir zu NetScaler Gateway > Policies > Authentication > SAML IDP
  • Im Reiter Policies über Add eine neue Policy erzeugen
Create Authentication SAML IDP Policy
  • Gebt der SAML IDP Policy einen Namen (z.B. Office365_SSO_Policy) und klickt neben dem Dropdown Menü Action auf Add
  • Im sich öffnenden Fenster Create Authentication SAML IDP Profile gebt ihr folgendes ein:
    • Name (z.B. Office365_SSO_Profile)
    • Import Metadata (Nicht auswählen)
    • Assertion Consumer Service Url (https://login.microsoftonline.com/login.srf)
    • SAML Binding (POST)
    • Logout Binding (POST)
    • IDP Certificate Name (Öffentliches Zertifikat für die Signierung, daher muss es später auch dem SP Office365 bekannt gemacht werden; z.B. Wildcard Zertifikat)
    • Sign Assertion (ASSERTION)
    • Issuer Name (Öffentlicher FQDN zum AAA-vServer; z.B. https://auth.deyda.net/saml/login)
    • Signature Algorithm (RSA-SHA1)
    • Digest Method (SHA1)
Create Authentification SAML IDP Profile
  • Klickt auf More um die Ansicht zu erweitern
    • Audience (urn:federation:MicrosoftOnline)
    • Skew Time (5)
    • Name ID Format (Persistent)
    • Name ID Expression (AAA.USER.ATTRIBUTE(2).B64ENCODE)
    • Attribute 1 (IDPEmail)
    • Attribute 1 Expression (AAA.USER.ATTRIBUTE(1))
    • Attribute 1 Format (URl)
    • Attribute 1 Friendly Name (mail)
Configure Authentication SAML IDP Profile
  • Über Create die Konfiguration des SAML IDP Profiles abschließen
  • Im Fenster Create Authentication SAML IDP Policy die gerade erstellte Action auswählen
  • Unter Expression HTTP.REQ.HEADER(„Referer“).CONTAINS(„microsoft“) eintragen
Configure Authentication SAML IDP Policy
  • Über Create die Erstellung der SAML IDP Policy abschließen

Nun erstellt ihr euren AAA-vServer (DNS auth.deyda.net) für die SAML Authentifizierung.

  • Hierfür navigieren wir zu Security > AAA – Application Traffic > Virtual Servers und erzeugt über Add einen neuen Virtual Server
    • Name (z.B. Office365_auth_VS)
    • IP Address Type (IP Address)
    • IP Address (VIP; externer FQDN auf z.B. auth.deyda.net)
    • Port 443
    • Authentication (Ausgewählt)
    • State (Ausgewählt)
Create Authentication Virtual Server
  • Über Continue erhaltet ihr die nächste Maske
    • Klickt auf No Server Certificate und bindet im folgenden Fenster ein passendes Zertifikat für den FQDN an (am einfachsten das Wildcard)
Authentication Virtual Server Certificate
  • Über Continue erhaltet ihr die nächste Maske
    • In dieser klickt auf No SAML IDP Policy und bindet die vorher erstellte Policy an (Office365_SSO_Policy)
Authentication SAML IDP Policy
  • Und wie immer über Continue erhaltet ihr die nächste Maske
    • In dieser klickt unter Basic Authentication Policies auf No LDAP Policy und bindet die vorher erstellte LDAP Policy an (Office365_LDAP_SSO_Policy)
Authentication LDAP Policy
  • Nun könnt ihr über Done die Konfiguration des AAA-vServers speichern
Authentication Virtual Server

Office365

Als erstes müssen wir noch das im Identity Provider hinterlegte Zertifikat aus dem Citrix ADC herunterladen.

  • Unter Traffic Management > SSL klickt auf Manage Certificates / Keys / CSR’s
  • Wählt hier nun das vorher benutzte Zertifikat aus und klickt auf Download

Um nun Office365, nach erfolgreichem Sync mit der lokalen AD, von einer Standard Domänen Authentifizierung auf eine Single-Sign On umzustellen, müssen wir folgendes tun.

  • Powershell mit installierten Azure AD Modul starten
  • Verbindung mit Office365 aufbauen über folgenden Befehl
Offce365 Connect Powershell
  • Um erfolgreich die benötigte Domäne auf Federated (Single-Sign On) umzuschalten muss sie vorher auf Managed stehen. Dies kann man mit dem folgenden Befehl prüfen
Get-MsolDomain
  • Um dies umzustellen, muss dieser Befehl ausgeführt werden
  • Nun können wir die Domäne umstellen, damit diese mit dem Citrix ADC kommuniziert. Zuerst definieren wir die Variablen für den späteren Befehl.
    • $url, $uri & $ecpUrl (Adresse des IdP (AAA-vServer))
    • $dom (Betroffene Domäne)
    • $fedBrandName (Frei wählbarer Name der Federation)
    • $cert (Pfad zum heruntergeladenen Zertifikat)
  • Mit dem folgenden Befehl schalten wir die Domänen Authentifizierung von Managed (Username & Password) auf Federated (Single-Sign On) um. Wichtige Punkte sind daher.
    • Vorher einen Administrativen User in Office365 anlegen, der nicht mit einem lokalen AD User verknüpft ist (Login ist dann nur mit Managed Domäne, z.B. **.onmicrosoft.com, möglich)
    • PowerShell nicht schliessen, bis Zugriff erfolgreich getestet wurde, da man sich sonst selber ausschließt (Zugriff ist dann nur noch über oben genannten Notfall Admin möglich)
    • Falls der Zugriff über Single-Sign On nicht funktioniert, einfach über oben genannten Befehl wieder auf Managed stellen
  • Die Konfiguration kann geprüft werden über den folgenden Befehl
Get-MsolDomainFederationSettings

Wenn wir uns nun mit unserem Benutzernamen über https://portal.office.com anmelden (z.B. manuel@deyda.net).

Weiterleitung zu ihrem Anmeldeseite

Werden wir direkt an unseren AAA-vServer weitergeleitet und können uns dort authentifizieren. Bei erfolgreicher Authentifizierung werden wir wieder an Office365 weitergeleitet.

Citrix ADC AAA vServer

Citrix ADC – Unified Gateway

Nun können wir unser vorher konfiguriertes Unified Gateway für die Office365 Bookmarks vorbereiten.

Um einen Zugriff auf die verschiedenen Zugriffsmethoden (Clientloser Zugriff / Zugriff auf virtuelle Apps und Desktops / Netzwerk Zugriff Verbindung) zu erhalten, müssen wir folgendes tun.

  • Im Citrix ADC Navigation Panel unter Integrate with Citrix Products auf Unified Gateway klicken
  • Dort wählen wir das Gateway aus das wir editieren wollen
  • Unter Portal Theme klicken wir auf das Stift Icon und wählen dann das Portal Theme RfWebUl aus
  • Die Auswahl bestätigen wir mit Continue
Unified Gateway Client Choice

Wenn wir nun Clientloser Zugriff auswählen, werden uns nicht nur die angebundenen Virtual Apps and Virtual Desktops angezeigt, sondern auch vorher definierte Bookmarks zu SaaS Anwendungen und Webseiten.

Jetzt wollen wir Office365 als SaaS Bookmark hinzufügen, um den User einen Single-Sign On Zugriff zu gewähren.

  • Im Citrix ADC Navigation Panel unter Integrate with Citrix Products auf Unified Gateway klicken
  • Dort wählen wir das Gateway aus das wir editieren wollen
  • Nun klicken wir auf das + Symbol neben Applications
  • Unter Choose Type wählen wir SaaS aus und bestätigen die Auswahl mit Continue
Unified Gateway Bookmark Choose Type
  • Nun wählen wir aus Choose from Catalog und suchen Office365 im Dropdown Menü
  • Wie immer wird die Auswahl mit Continue bestätigt
Unified Gateway Bookmark SaaS Choose from Catalog
  • Im folgenden Fenster konfiguriert ihr das Office365 Bookmark und bestätigt die Konfiguration mit Continue
    • Name (Anzeige Name)
    • Service Provider Login URL (https://login.microsoftonline.com/login.srf)
    • Service Provider ID (https://login.microsoftonline.com/login.srf)
    • IDP Certificate Name (IdP Zertifikat)
    • Issuer Name (IdP Adresses, z.B. https://auth.deyda.net/saml/login)
SaaS-Application
  • Das folgende Fenster noch mit Done bestätigen und ihr habt ein Bookmark für Office365 hinzugefügt

Wenn ihr euch aber nun im Unified Gateway anmeldet und das Bookmark öffnet, werdet ihr erst nach eurem Benutzernamen gefragt und dann an denn AAA-vServer weitergeleitet.

SaaS Office365 Bookmark without Single-Sign On

Das ist noch nicht das gewünschte Single-Sign On Ergebnis und daher müssen wir das Bookmark nochmals anpassen, um ein initial IdP einzurichten.

  • Im Citrix ADC Navigation Panel auf NetScaler Gateway > Resources > Bookmarks klicken
  • Nun wählt ihr das über den Wizard erstellte Bookmark aus und klickt auf Edit
Edit Bookmark SaaS Office365
  • Hier ändert ihr den SSO Type auf SAML Based Authentication und klickt bei SAML SSO Profile auf Edit
Bookmark SSO Type SAML Based Authentication
  • Anpassung des SAML SSO Profiles
    • Relay State Expression (HTTP.REQ.COOKIE)
    • Name ID Expression (AAA.USER.ATTRIBUTE(2).B64ENCODE
  • Klickt auf More für die weiteren Einstellungen
Create SAML SSO Profile
  • Im aufgeklappten More Menü muss noch folgendes editiert werden
    • Attribute 1 (IDPEmail)
    • Attribute 1 Expression (AAA.USER.ATTRIBUTE(1))
    • Attribute 1 Format (URl)
    • Attribute 1 Friendly Name (mail)
Create SAML SSO Profile Attribute 1

Wenn ihr euch nun im Unified Gateway anmeldet und das Bookmark öffnet, werdet ihr direkt weitergeleitet nach Microsoft.

Office365 Single-Sign On

Dort werdet ihr im Hintergrund per Single-Sign On authentifiziert und direkt nach Office365 weitergeleitet.

Single-Sign On Office365