| | 0

Citrix NetScaler als SAML IdP für Microsoft Office365

Auf der Suche nach neuen Möglichkeiten, wie ich meine Labor Umgebung erweitern könnte, kam mir die Idee den NetScaler mit der Rolle des SAML IdP auszustatten, sodass meine Office 365 Benutzer sich am NetScaler IdP authentisieren müssen.
Bevor wir mit diesem kleinen How-to starten, nehme ich an, dass der NetScaler bereits in der Grundkonfiguration läuft. Gleiches nehme ich für Office365 als auch das bereits ein entsprechender Sync der Benutzer zwischen On-Premise Active Directory und Azure Active Directory besteht. Auf seitens des NetScaler ist zusätzliche ein AAA vServer oder NetScaler Gateway nötig. Dieses muss über eine öffentliche Adresse verfügbar sein. Somit wird für diese Adresse ein SSL Zertifikat benötigt, welches von einer öffentlichen CA signiert wurde. Zusätzlich wird ein Zertifikat benötigt um die SAML Tokens zu signieren. Dieses Zertifikat kann das gleiche öffentliche Zertifikat sein oder wie ich es in meinem Labor umgesetzt habe ein selbst signiertes Zertifikat.
Wir beginnen mit dem NetScaler Teil. Initial erstellen wir einen AAA vServer oder NetScaler Gateway vServer und weisen diesem vServer das öffentliche Zertifikat zu. Abschließend muss dieser vServer öffentlich erreichbar gemacht werden. Wie dies geschieht hängt u.a. stark von der vorhandenen Infrastruktur ab, weshalb ich hierauf nicht näher eingehe.
Im zweiten Schritt ist es nötig einen LDAP Server, als auch eine LDAP Policy zu erstellen. Hier ist wichtig darauf zu achten, dass für Attribute 1 der Wert „mail“ gesetzt wird. Durch dieses Attribut wird beim jeweiligem LDAP Request die E-Mail Adresse extrahiert, welche seitens Office365 zwingend erforderlich ist für die Authentifizierung.

Mein LDAP Server sieht wie folgt aus:

Zusätzlich ist es nötig eine LDAP Policy zu erstellen und den gerade erstellten LDAP Server mit dieser zu verknüpfen.

Im nächsten Schritt erstellen wir das SAML IdP Profil: Security -> AAA – Application Traffic -> Policies -> Authentication -> Basic Polices -> SAML IdP. Das Profil sollte folgendem Beispiel entsprechen:

Die vollständige URL bei “Assertion Consumer Service URL” lautet https://login.microsoftonline.com/login.srf. Im Feld „IDP Certificat“ muss eben jenes Zertifikat ausgewählt werden welches zum signieren der SAML Tokens verwendet werden soll. Es ist sicherzustellen, dass der Private Schlüssel dieses Zertifikates ebenfalls auf dem NetScaler präsent ist. Der „Issuer Name“ ist der öffentliche FQDN des AAA vServer oder des NetScaler Gateways einzutragen. Beispiel https://aaa.fqdn.com/saml/login, wobei aaa.fqdn.com durch die öffentliche Adresse des vServers zu ersetzen ist. Die restlichen Optionen sollten aus dem Screenshot übernommen werden.
Natürlich müssen wir für dieses Profil auch eine Policy erstellen.

Da es möglich ist mehrere Policies an einen AAA oder NetScaler Gateway vServer zu binden, welche unterschiedliche Einstellungen haben, überprüfen wir im Referer, ob die Anfrage von Microsoft kommt. So ist es möglich mithilfe eines AAA vServers multiple SAML IdP zu betreiben, welche wiederum auf verschiedene SAML Service Provider reagieren.
Abschließend ist es nötig die LDAP Policy und die SAML Policy an den vServer zu binden. Herbei sollte darauf Wert gelegt werden, dass die SAML Policy die niedrigere Priorität hat. Der vServer sollte abschließend folgenden Screenshots ähneln.

Nun ist es an der Zeit die Office365 Seite zu konfigurieren. Hierfür wird das Windows Azure Active Directory Modul für Windows Powershell benötigt. Nach erfolgreichem Starten dieser PowerShell Session verbinden wir uns mit Connect-MsolService zu unserem Office365 Account. Sollte die entsprechende Domain innerhalb Office365 bereits zu einer Föderierten Domain konvertiert sein, muss dieser Schritt rückgängig gemacht werden. Dieses kann mit folgenden Befehlen geschehen. Managed Set-MsolDomainAuthentication -DomainName domain.com -Authentication Managed, sowie Convert-MSOLDomainToStandard –DomainName domain.com -SkipUserConversion $false -PasswordFile c:\userpasswords.txt. Vor dem ausführen der Befehle rate ich dringends sich die entsprechende TechNet Seite zu diesem Thema anzuschauen: https://msdn.microsoft.com/en-us/library/dn194122.aspx

Nun setzen wir innerhalb der PowerShell Sitzung mehrere Variablen:

  • $url = “https://aaa.fqdn.com/saml/login”
  • $uri = “https://aaa.fqdn.com /saml/login”
  • $ecpUrl = “https:// aaa.fqdn.com /saml/login”
  • $dom = “fqdn.com”
  • $fedBrandName = “Company Name”
  • $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(“C:\pathtocertificate\certificate.cer”) $certData = [system.convert]::tobase64string($cert.rawdata)

aaa.fqdn.com muss durch die öffentliche Adresse des AAA vServer bzw. des NetScaler Gateways ersetzt werden. Ebenfalls ist hier der Pfad zum Zertifikat anzupassen. Hier muss jenes ausgewählt werden, welches auf dem NetScaler zum signieren der SAML Tokens gewählt wurde.

Abschließend wird die Methode der Authentifizierung der Office365 mit folgendem Befehl endgültig umgestellt:

  • Set-MsolDomainAuthentication -DomainName $dom -federationBrandName $fedBrandName -Authentication Federated -PassiveLogOnUri $url -SigningCertificate $certData -IssuerUri $uri -ActiveLogOnUri $ecpUrl -LogOffUri $url –PreferredAuthenticationProtocol SAMLP

Nach einigen Augenblicken sollte während der Authentifizierung, der Anwender nun auf den NetScaler vServer umgeleitet werden.

Tipps und Quellen: