Teil 3: VerSAMLung – SSO mit SAML und FAS für Citrix CVAD

(von Benjamin Rodewald und Denis Junger)

Nachdem wir uns in Teil 1 und Teil 2 der Serie „VerSAMLung“ mit Webapplikationen beschäftigt haben, betrachten wir in Teil 3 die Anbindung von Citrix Virtual Apps and Desktops (CVAD) mit Azure Active Directory Anmeldung. Da auch hier kein Kennwort vorliegt, welches für ein Single Sign on genutzt werden könnte und der Storefrontserver kein KCD unterstützt, kommt eine weitere Citrix Komponente „Citrix Federated Authentication Service“ (FAS), welche eine virtuelle Smartcard Anmeldung am Citrix Desktop ermöglicht zum Einsatz.

Dies ermöglicht dem User ein einmaliges Anmelden an seinem Azure AD integriertem Notebook und danach ohne weitere Passworteingabe direkt auf Citrix CVAD zuzugreifen.

Vorbereitenden Maßnahmen

Installation Citrix FAS, vollständige Anleitung unter: Install and configure | Federated Authentication Service 2112 (citrix.com)

Federation Service

Editieren der Default Rule auf dem Citrix FAS
Storefront Server Berechtigungen
Dieses Bild hat ein leeres Alt-Attribut. Der Dateiname ist image.png
VDA Berechtigungen (in dieser kleinen Testumgebung haben wir keine spezielle Ausnahme gemacht)
Benutzer Berechtigungen (Auch hier dürfen alle Benutzer die Regel nutzen) 

FAS integration für den Storefront Store aktivieren (Per Powershell auf dem Storefrontserver ausführen, dabei Storenamen anpassen): 

Get-Module "Citrix.StoreFront.*" -ListAvailable | Import-Module
$StoreVirtualPath = "/Citrix/Store"
$store = Get-STFStoreService -VirtualPath $StoreVirtualPath 
$auth = Get-STFAuthenticationService -StoreService $store 
Set-STFClaimsFactoryNames -AuthenticationService $auth -ClaimsFactoryName "FASClaimsFactory" 
Set-STFStoreLaunchOptions -StoreService $store -VdaLogonDataProvider "FASLogonDataProvider" 

Powershell Kommandozeile

Storefront Konfiguration

Als nächstes muss nun überprüft werden ob die entsprechenden Authentication Methods aktiviert sind. Hierbei ist darauf zu achten, dass unter „Pass-through from Citrix Gateway“ der Haken unter „Configure Delegated Authentication“ gesetzt ist:

Authentication Methods
Das Setzen des Hakens veranlasst den Storefront komplett dem Gateway zu vertrauen für die Anmeldedaten. Hierfür ist dann allerdings ein sog. Callback erforderlich, den wir im nächsten Schritt konfigurieren.
Es sollte später geprüft werden, ob die Callback URL eingetragen und auch von den Storefrontservern erreichbar ist.
Wichtig: das Gateway/ Callback -RL Zertifikat muss dabei vom Storefront als Vertrauenswürdig betrachtet werden, sonst funktioniert der Callback nicht.

Einrichtung Gateway Virtual Server auf dem ADC

Als nächstes muss man das Citrix Gateway konfigurieren. Wenn noch kein Gateway existiert kann mit dem Wizard eins mit Standard Settings erstellt werden:

Erstellen des Citrix Gateway via Wizard

Name, VIP, FQDN und Port festlegen

Zertifikat anbinden

zu Testzwecken haben wir ein selbst signiertes Zertifikat genommen (welches wir auch auf dem Storefront als vertrauenswürdig hinzugefügt haben)

Als Primäre Authentication haben wir Radius genommen (entfernen wir später wieder), andernfalls läuft der Wizard nicht weiter. Dann wählen wir das Portaltheme aus.

Die Anbindung von CVAD erfolgt im Abschnitt „Applications“. Auf Add Applications klicken um die Applikationen hinzuzufügen.

in unserem Fall wählen wir XenApp & XenDesktop (der neue Name scheint im Wizard noch nicht angekommen) und wählen als Integrationspunkt den Storefront aus.

Storefront URL und STA Adresse hinzufügen

Mit Done wird der Wizard geschlossen und das Gateway ist gebaut.

Einrichtung Enterprise Application im Microsoft Azure Portal

Auch hier benötigen wir wieder eine Enterprise Applikation in Azure AD wie in Teil 1 schon beschrieben.

Gateway/ SAML SP Konfiguration auf dem ADC

Nun entfernen wir die Dummy Radius Policy, die wir mit dem Wizard erstellt haben.
Statt der Radius Policy legen wir jetzt einen AAA Virtual Server an, an den wir die SAML Policies binden und den wir später selber in Netscaler N-Factor Manier per Authentication Profile an das Gateway binden.
add authentication vserver aaamwdemo SSL 0.0.0.0

Zertifikat an den AAA Virtual Server binden (tritt hier nicht äußerlich in Erscheinung, muss aber vorhanden sein).
bind ssl vserver aaamwdemo -certkeyName mwdemo.cer
Zuerst legen wir ein SAML SP Server Objekt an.

Die „Redirect“ und die „Single Logout Url“ sind bei unserem Beispiel (Microsoft Azure AD) gleich und können den Settings der Enterprise Application im Azure entnommen werden („Reply URL“ und „Single Sign On Url“).

Dort laden wir uns ebenfalls das „SAML Signing“ als „Certificate (Base64)“ herunter und fügen es auf dem ADC als „IDP Certificate“ über den Knopf „Add“ hinzu (siehe nächster Screenshot).

Das EA Feld „Identifier“ im Azure und das Feld „Issuer“ auf dem ADC müssen den gleichen Text String enthalten, wir haben die URL/den FQDN des SAML-SP verwendet.

Nach Citrix Best Practices muss zur Absicherung eine Relaystate Regel konfiguriert werden (vergl. Citrix Application Delivery Controller and Citrix Gateway – SAML Configuration Reference Guide):
https://support.citrix.com/article/CTX316577

Relaystate Rule
add authentication samlAction AzureSSOHapp-Citrix-ADC-CVAD -samlIdPCertName Citrix-ADC-CVAD -samlRedirectUrl "https://login.microsoftonline.com/ddff6db-154e-4e33-bf57-17317fdfdfd/saml2" -samlIssuerName "https://mwdemo.michael-wessel.de" -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://mwdemo.michael-wessel.de\")" -logoutURL "https://login.microsoftonline.com/17db-154e-4e3d-b8f-f9eb1e8d/saml2"

Hinzufügen des SAML-IDP Zertifikats.
add ssl certKey Citrix-ADC-CVAD -cert "Citrix ADC CVAD.cer"
Das SAML SP Server Objekt verdrahten wir in einer neu angelegten SAML SP Policy die wir an den zuvor erstellten AAA Virtual Server binden.
add authentication Policy pol_AzureSSOHapp-Citrix-ADC-CVAD -rule true -action AzureSSOHapp-Citrix-ADC-CVAD

Binden an den AAA
bind authentication vserver aaamwdemo -policy pol_AzureSSOHapp-Citrix-ADC-CVAD -priority 100 -gotoPriorityExpression NEXT
Im nächsten Schritt legen wir ein Authentication Profile an, welches die AAA Settings zusammenfasst und die Bindung an das Gateway ermöglicht.
Im Profil wird der AAA Virtual Server verknüpft.
Die Domain kann leer gelassen werden oder wenn der Cookie von verschiedenen Virtual Servern genutzt werden soll, die übergeordnete Domain angegeben werden.
add authentication authnProfile auth_prof_aaamwdemo_Citrix_ADC_CVAD -authnVsName aaamwdemo

Über den Punkt „Authentication Profile“ wird das Profil an den Gateway Virtual Server gebunden.
Hinweis: Das Objekt sollte danach nicht mehr mit dem Wizard bearbeitet werden.

Dem aufmerksamen Betrachter sind vielleicht die SSL Settings des Gateways aufgefallen. Diese sind so vom Wizard erzeugt worden und nur für eine Testumgebung einzusetzen. Für den produktiven Einsatz wären diese anzupassen (z.B. SSL abschalten, Perfect Forward Secrecy implementieren, aktuelles Cipherset erstellen).

Test der fertigen Konfiguration

Wenn man sich nun von einem nicht Azure AD integrierten Gerät anmelden würde, erschiene je nach Azure Conditional Access Konfiguration ggf. einfach die Azure Anmeldeseite und/oder die Tokenabfrage auf dem Mobiltelefon und danach die Storefront oder RFWEBUI Oberfläche, von der aus man die Applikationen starten kann.

Wenn sich der User an einem Azure AD integrierten Gerät anmeldet, ist er danach direkt am Azure AD angemeldet. Greift er dann auf den ADC zu , wird er dort über die Vertrauensbeziehung zwischen ADC als SAML SP und Azure AD als SAML IDP direkt angemeldet und kann die Applikationen starten.

Wie im Folgenden Video zu sehen ist nur die Anmeldung am Notebook/ Desktop erforderlich, alles weitere erfolgt über Single Sign On:

SSO mit Azure AD Anmeldung