Ein NetScaler Gateway für eine XenApp / XenDesktop Umgebung zu konfigurieren stellt sicherlich (auch Dank des Wizards) für die meisten kein Problem dar. Wie verhält es sich allerdings, wenn sich an dem Gateway auch Benutzer anderer Domänen anmelden sollen. Die einfache Lösung ist hier die Verwendung des UPN sowie entsprechende Authentifizierungsrichtlinien am Gateway.
In meinem speziellen Fall ist das leider keine Lösung, da die Benutzer oftmals den UPN nicht kennen (er unterscheidet sich leider von der E-Mail Adresse) und sie sind einfach den SAMAccountName gewohnt. Der ideale Weg wäre hier also den SAM Account zu verwenden.
Um das jetzt für den Benutzer möglichst einfach zu gestalten, wäre ein Domänen Drop-Down Feld auf der Anmeldeseite des Gateways in diesem Fall die einfachste Lösung.
Auf dem NetScaler erstelle ich hier zuerst das Gateway. Hierbei ist es völlig egal, ob wir das manuell oder über den Wizard erstellen. Ist das NetScaler Gateway richtig konfiguriert, machen wir uns an das Drop-Down Feld für die Multi-Domänen Anmeldung.
Das hört sich jetzt zwar kompliziert an, ist aber im wesentlichen lediglich eine Rewrite Policy mit entsprechender Rewrite Action. Die Domänen setzen wir dann für die Anmeldung in einem Cookie, den wir später für die Anmeldung benutzen.
Fangen wir zuerst mit der Rewrite Action an.
Im Wesentlichen erstellen wir unter AppExpert -> Rewrite -> Rewrite Action eine neue Action wie im Screenshot zuvor abgebildet.
Wer das ganze lieber über SSH über das CLI machen möchte, hier ist das entsprechende Kommando:
Add rewrite action insert_domain_dropdown insert_http_header Set-Cookie "\"userDomains=Domain1,Domain2,Domain3;path=/;Secure\""
Jetzt benötigen wir natürlich noch die entsprechende Rewrite Policy für unsere Action. Diese erstellen wir unter AppExpert -> Rewrite -> Rewrite Policy.
Die Policy erstellen wir ebenfalls wie im Screenshot zuvor abgebildet.
Auch hier wieder das Kommando für das CLI:
add rewrite policy insert_domain_dropdown_policy "HTTP.REQ.URL.CONTAINS(\"/vpn/index.html\")" insert_domain_dropdown
Damit die Policy später auch verwendet wird, müssen wir diese noch an unser Gateway binden.
Das Kommando für die CLI sieht wieder wie folgt aus:
bind vpn vserver Name_des_Gateways -policy insert_domain_dropdown_policy -priority 100 -gotoPriorityExpression END -type RESPONSE
Damit das ganze auch funktioniert, benötigen wir für jede Domäne einen entsprechenden LDAP Server sowie jeweils eine LDAP Authentication Policy.
Der Server sollte natürlich auf einen gültigen Domänen Controller der Domäne verweisen. Wir Verwenden hier allerdings als Server Logon Attribute den sAMAccountName und als SSO Logon Attribute den UserPrincipalName. Das setzt natürlich auch voraus, dass alle Benutzer einen UPN in ihrem Account konfiguriert haben (das ist leider nicht immer der Fall).
Die LDAP Authentication Policy enthält hier allerdings eine etwas andere Expression, da wir hier kein NS_TRUE verwenden, sondern den Cookie abfragen wollen.
Die Expression lautet dann:
REQ.HTTP.HEADER Cookie CONTAINS Domain1
Die LDAP Policies für jede Domäne müssen wir nun noch an unser NetScaler Gateway binden, was dann wie folgt aussehen sollte.
Haben wir an dieser Stelle alles fertig, können unsere Benutzer bei der Anmeldung ihren Benutzernamen verwenden und aus dem Drop-Down Feld ihre entsprechende Domäne auswählen.