Erweiterte Konzepte

Citrix Gateway und Microsoft Azure Multi-Factor Authentication

Citrix Gateway präsentiert alle gehosteten, SaaS-, Web-, Enterprise- und Mobilanwendungen Benutzern auf jedem Gerät und jedem Browser. Es verwendet nFactor Authentication, um Benutzer gegen lokale Microsoft AD zu authentifizieren und nutzt Microsoft AD FS für Azure Multi-Factor Authentication (MFA).

Citrix Gateway

Citrix Gateway bietet Benutzern einen Access Point und Single Sign-On (SSO) für Geschäftsanwendungen und Daten, die in einem Rechenzentrum und in der Cloud bereitgestellt werden. Es wird als SaaS für eine Reihe von Geräten geliefert — Laptops, Desktops, Thin Clients, Tablets und Smartphones. Citrix Gateway bietet Konsolidierung, reduziert den Platzbedarf der RAS-Infrastruktur, senkt die Kosten und sorgt für eine einfache Verwaltung und eine bessere Benutzererfahrung. Citrix Gateway unterstützt den Übergang von IT zu Hybrid Cloud- und SaaS-Umgebungen.

  • Verband und Single Sign-On

Citrix Gateway bietet eine Verbundidentität und unterstützt SAML 2.0, OAuth und OpenID, um Single Sign-On über alle Anwendungen hinweg zu erreichen, unabhängig davon, ob es sich um Web-, VDI-, Enterprise- oder SaaS-Anwendungen handelt.

  • Benutzerverzeichnis lokal

Citrix Gateway stellt SSO für SaaS-Anwendungen wie Office 365 und Salesforce bereit und behält das Benutzerverzeichnis lokal. Es kann als IdP oder Proxy für Microsoft Active Directory Federation Services (AD FS) implementiert werden.

  • Multi-Faktor-Authentifizierung (nFaktor-Authentifizierung)

Citrix Gateway bietet nFactor-Authentifizierungsmechanismen und ermöglicht eine detaillierte Kontrolle darüber, wer auf das Netzwerk zugreift, was zugegriffen wird und wie und wann darauf zugegriffen wird. Es unterstützt alle Authentifizierungsmechanismen wie RADIUS, TACACS, NTLM, Diameter, SAML 2.0, OAuth 2.0 und OpenID 2.0.

  • Kontextbezogene Zugriffssteuerungsrichtlinien

Citrix Gateway ermöglicht eine detaillierte Zugriffskontrolle auf Geschäftsanwendungen basierend auf dem Status des Endbenutzergeräts, des Benutzers, des Benutzerstandorts und anderer Daten. Ein IT-Administrator kann Richtlinien erstellen, verwalten und durchsetzen, um sicher auf Daten in einer Anwendungsumgebung zuzugreifen. Diese Richtlinien können für VDI-, Web-, Mobil-, Enterprise- und SaaS-Anwendungen implementiert werden.

  • Sichtbarkeit und Überwachung

Citrix Application Delivery Management umfasst Gateway Insight, das eine Transparenz der End-to-End-Benutzererfahrung für alle Anwendungen bietet, auf die über Citrix Gateway zugegriffen wird. Sie bietet Informationen für Anwendungsunterstützungsteams zur Behebung von Problemen bezüglich Authentifizierungsfehlern, einschließlich EPA-Überprüfungsfehlern und Single Sign-On-Fehlern.

Anwendungen

Unterstützte Apps

Microsoft Azure MFA

Menschen verbinden sich mit organisatorischen Ressourcen in immer komplizierteren Szenarien. Über Smartphones, Tablets, PCs und Laptops, häufig auf mehreren Plattformen, verbinden sich Benutzer über eigene, private und öffentliche Geräte im Unternehmensnetzwerk und außerhalb des Unternehmensnetzwerks. In dieser ständig vernetzten, Multi-Device-und Multi-Plattform-Welt ist die Sicherheit von Benutzerkonten wichtiger denn je. Passwörter, unabhängig von ihrer Komplexität, die über Geräte, Netzwerke und Plattformen hinweg verwendet werden, reichen nicht mehr aus, um die Sicherheit des Benutzerkontos zu gewährleisten, insbesondere wenn Benutzer dazu neigen, Kennwörter kontenübergreifend wiederzuverwenden. Anspruchsvolle Phishing- und andere Social-Engineering-Angriffe können dazu führen, dass Benutzernamen und Passwörter im Dark Web veröffentlicht und verkauft werden.

Die Sicherheit des zweistufigen Verifizierungsprozesses liegt in seinem mehrstufigen Ansatz. Die Kompromisse mehrerer Authentifizierungsfaktoren stellen eine große Herausforderung für Angreifer dar. Selbst wenn es einem Angreifer gelingt, das Kennwort des Benutzers zu lernen, ist es nutzlos, ohne auch über die zusätzliche Authentifizierungsmethode zu verfügen. Es funktioniert, indem zwei oder mehr der folgenden Authentifizierungsmethoden erforderlich sind:

  • Etwas, das Sie kennen (typischerweise ein Kennwort)
  • Etwas, das Sie haben (ein vertrauenswürdiges Gerät, das nicht leicht dupliziert wird, wie ein Telefon)
  • Etwas, das du bist (Biometrie)

Azure Multi-Factor Authentication schützt den Zugriff auf Daten und Anwendungen. Es bietet eine zusätzliche Sicherheitsebene mit einer zweiten Form der Authentifizierung. Unternehmen können den bedingten Zugriff nutzen, um die Lösung an ihre spezifischen Anforderungen anzupassen.

Microsoft Azure MFA-Bereitstellungsmethoden

Es gibt verschiedene Methoden, Azure MFA als zweiten Authentifizierungsfaktor zu nutzen. Solche Methoden werden unten kurz mit ihren Vor- und Nachteile erklärt.

Azure MFA-Server

Microsoft Azure Multi-Factor Authentication Server war die ursprüngliche Methode und wird veraltet sein. Es sollte nicht für eine neue Implementierung in Betracht gezogen werden, da

  • Für diese Methode gibt es keine weiteren Investitionen von Microsoft.
  • Es gibt keine Integration mit SSPR und Azure MFA Cloud-basiert.
  • Es gibt kein nahtloses Migrationstool von MFA Server auf MFA Cloud-basierte Lösung.

Azure MFA-Netzwerkrichtlinienserver-Erweiterung

Network Policy Server (NPS) Erweiterung für Azure MFA ist eine unterstützte Lösung, die NPS-Adapter verwendet, um eine Verbindung mit Azure MFA Cloud-basiert herzustellen. Es kann als lokaler RADIUS-Server verwendet werden.

  • Der NPS-Adapter (RADIUS) stellt einen Netzwerkstandort innen/außerhalb der MFA-Regel oder Ein/Aus bereit.
  • Es ist nicht kompatibel mit Azure AD Richtlinien für bedingten Zugriff ähnlich der SAML-Integrationsmethode. Richtlinien für bedingte Zugriffe verfügen über viel umfassendere und bessere Benutzererfahrungen.
  • Benutzer müssen vor der Verwendung des NPS-Adapters in MFA registriert sein. Im Gegensatz zu Azure MFA Cloud-based and Conditional Access kann NPS Extension, wenn der Benutzer nicht registriert ist, den Benutzer nicht authentifiziert, wodurch mehr Anrufe an den Helpdesk generiert werden.
  • Wenn NPS-Adapter MFA aufruft, trifft es Benutzer registrierte Standardoption. Es gibt keine visuelle Benachrichtigung an den Benutzer, dass MFA erforderlich ist und kommt. Es gibt keine Benutzeroberfläche für den Benutzer, um MFA-Methoden während eines Gated Prozesses zu ändern. Wenn der Benutzer sein Standardgerät nicht dabei hat, schlägt es fehl. Der Benutzer muss zum Selfservice-Portal zurückkehren und die Standardoption zurücksetzen, und dann erneut versuchen, eine Verbindung herzustellen.

Microsoft AD FS und Azure MFA

Wenn Ihre Organisation mit Azure AD verbunden ist, aber Kennwort-Hash nicht mit Azure AD synchronisiert werden, können Sie lokale AD für Lightweight Directory Access Protocol (LDAP) verwenden und Azure MFA als Teil der Zugriffsrichtlinien auf AD FS-Relaypartys aktivieren. Ab Windows Server 2016 können Sie Azure MFA jetzt für die primäre Authentifizierung konfigurieren.

  • Azure MFA-Adapter ist in Windows Server 2016 integriert und es ist keine zusätzliche Installation erforderlich.
  • Azure MFA-Adapter lässt sich direkt in Azure AD integrieren und erfordert keinen lokalen Azure MFA-Server.
  • Wenn Benutzer nicht für MFA registriert sind, werden sie bei der nächsten Anmeldung durch den Prozess geführt. Es sorgt für weniger Anrufe an den Helpdesk und einen besseren Prozess für Benutzer.
  • Benutzer erhalten eine visuelle Benachrichtigung, dass MFA erforderlich ist und kommt. Benutzer können die Gateway option während eines Gated Prozesses in der Benutzeroberfläche ändern.

Azure AD und Azure MFA

Wenn Ihre Organisation Kennwort-Hash mit Azure AD synchronisiert, kann Azure MFA mithilfe von Richtlinien für bedingten Zugriff genutzt werden, um Benutzer für eine zweite Faktorauthentifizierung herauszufordern.

  • Für diese Methode sind keine zusätzlichen Installationen vor Ort erforderlich.
  • Wenn Benutzer nicht für MFA registriert sind, werden sie bei der nächsten Anmeldung durch den Prozess geführt. Es sorgt für weniger Anrufe an den Helpdesk und einen besseren Prozess für Benutzer.
  • Benutzer erhalten eine visuelle Benachrichtigung, dass MFA erforderlich ist und kommt. Benutzer können die Gateway option während eines Gated Prozesses in der Benutzeroberfläche ändern.

Azure AD Pass-Through-Authentifizierung und Azure MFA

Mit der Azure AD Pass-Through-Authentifizierung (PTA) können Benutzer sich bei lokalen und cloudbasierten Anwendungen mit denselben Kennwörtern anmelden. Wenn sich Benutzer mit Azure AD anmelden, überprüft dieses Feature die Kennwörter der Benutzer direkt gegen das lokale Active Directory. Azure AD PTA ist eine Alternative zur Azure AD Kennworthash-Synchronisation, die den gleichen Vorteil der Cloud-Authentifizierung für Organisationen bietet.

  • Azure AD PTA erfordert, dass ein leichter Agent lokal installiert wird.
  • Azure AD PTA schützt die Benutzerkonten, indem sie nahtlos mit den Azure AD Richtlinien für bedingten Zugriff, einschließlich Azure MFA, zusammenarbeiten.
  • Benutzer können Self-Service-Kennwortverwaltungsaufgaben in der Cloud erledigen.
  • Lokale Kennwörter werden niemals in irgendeiner Form in der Cloud gespeichert.
  • Der Agent stellt nur ausgehende Verbindungen innerhalb des Netzwerks her. Daher ist es nicht erforderlich, den Agenten in einem Umkreisnetzwerk zu installieren, das auch als DMZ bezeichnet wird.

Aktuelle Situation

Eine Umgebung mit den folgenden Merkmalen erfordert die Nutzung von Azure MFA als zweiten Authentifizierungsfaktor:

  • Lokale AD mit Azure AD-Synchronisierung ist konfiguriert.
  • Azure AD Kennworthash-Synchronisierung ist deaktiviert.
  • Zugriff auf O365-Anwendungen ist erforderlich.
  • Der lokale Zugriff auf Citrix Virtual Apps and Desktops ist erforderlich.
  • Der Zugriff auf Anwendungen mit moderner Authentifizierungsmethode (SAML, OAuth) ist erforderlich.
  • Zugriff auf Anwendungen mit Legacy-Authentifizierungsmethode ist erforderlich.

Entwurfspunkte

Hier sind die Entwurfspunkte für die vorgeschlagene Lösung:

  • Zugriff auf gehostete, SaaS-, Unternehmens- und Webanwendungen in einem einzigen Portal und ist sicher erforderlich.
  • Benutzer müssen ihre Anmeldeinformationen nur einmal während des Authentifizierungsprozesses eingeben.
  • Single Sign-On muss für alle gehosteten, SaaS, Unternehmen und Webanwendungen bereitgestellt werden.

Vorgeschlagene Lösung

Übersicht

Die vorgeschlagene Lösung basiert auf folgenden Komponenten:

  • On-Premises Citrix Gateway
  • Lokale Microsoft AD
  • Lokale Microsoft AD FS
  • Lokale Citrix ADC als AD FS-Proxy
  • Microsoft Azure MFA

Citrix Gateway nutzt Authentifizierungs-, Autorisierungs- und Überwachungsfunktion (Citrix ADC AAA) und nFactor-Authentifizierungsmechanismen, um Benutzer mit LDAP-Richtlinie zu authentifizieren und die Zugriffsrichtlinie auf AD FS-Relay-Partei zu nutzen, um Azure MFA-Validierungsprozess auszulösen. Nachdem Azure MFA den Benutzer überprüft hat, generiert AD FS SAML-Assertion (SAML-Antwort) und leitet den Benutzer zurück an Citrix Gateway um. Zu diesem Zeitpunkt wird der Benutzer authentifiziert, und Citrix Gateway präsentiert alle Anwendungen, zu denen der Benutzer berechtigt ist.

Die Lösung erfordert zwei öffentliche DNS-Einträge und zwei öffentliche IP-Adressen:

Beschreibung Wert
Citrix Gateway-FQDN access.ctxdemos.com
Citrix Authentifizierung, Autorisierung und Auditing FQDN aaa.ctxdemos.com

Die Lösung verwendet ein öffentliches SSL-Zertifikat:

Beschreibung Wert
Allgemeiner Name access.ctxdemos.com
Alternativer Betreff Name sts.ctxdemos.com
Alternativer Betreff Name aaa.ctxdemos.com

Die Lösung verwendet auch ein Platzhalter-SSL-Zertifikat, das von internen Microsoft Certificate Authority Services ausgestellt wurde:

Beschreibung Wert
Allgemeiner Name *.ctxdemos.com

Authentifizierungsablauf

Sequenzdiagramm

Das folgende Sequenzdiagramm zeigt den Authentifizierungsfluss für die Lösung:

Sequenzdiagramm

Authentifizierungsschritte

Die Authentifizierungsschritte sind:

  1. Der Benutzer navigiert zuhttps://access.ctxdemos.com.
  2. Citrix Gateway leitet den Benutzer zum ersten Citrix ADC AAA VIP (Non-Addressable) um.
  3. Die erste Citrix ADC AAA VIP verwendet eine Anmeldung ohne Schema, die mit einem einmaligen Anmelden konfiguriert ist. Anschließend beginnt die Verarbeitung der erweiterten Authentifizierungsrichtlinien.
  4. Die erste Authentifizierungsrichtlinie ist SAML SP zu einem nicht adressierbaren LB-VIP, um Authentifizierungscookies zu generieren.
  5. Der Helfer LB VIP ist so konfiguriert, dass die zweite Citrix ADC AAA VIP (Addressable) für die Authentifizierung verwendet wird. So leitet es den Benutzer auf die zweite Authentifizierung, Autorisierung und Audit-VIP um.
  6. Zweites Citrix ADC AAA VIP verwendet das Anmeldeschema Username Only, das den Benutzer zur Eingabe des Benutzernamens auffordert. Anschließend beginnt die Verarbeitung der erweiterten Authentifizierungsrichtlinien.
  7. Die erste Authentifizierungsrichtlinie ist eine Gruppenextraktion, die den Benutzernamen in einem lokalen AD abfragt und überprüft, ob der Benutzer zur Sicherheitsgruppe AzureMFACAUsers gehört. Sobald das Ergebnis der Validierung erfolgreich ist, beginnt es, den nächsten Authentifizierungsfaktor zu verarbeiten, der die LDAP-Richtlinie ist.
  8. Die LDAP-Richtlinie verwendet das Anmeldeschema UsernameAndPassword und ein vorausgefülltes Benutzernamenfeld und fordert den Benutzer zur Eingabe des AD-Kennworts auf.
  9. Wenn die Authentifizierung auf dem zweiten Citrix ADC AAA VIP erfolgreich abgeschlossen wurde, geht es zurück an Helfer LB VIP, die eine SAML-Antwort für die erste Authentifizierung, Autorisierung und Audit-VIP generiert.
  10. Der erste Citrix ADC AAA VIP beginnt mit der Verarbeitung des nächsten Faktors. Dabei handelt es sich um eine Gruppenextraktion, um sicherzustellen, dass die Benutzergruppen aus AD extrahiert und in der Authentifizierungs-, Autorisierungs- und Überwachungsvariable gespeichert werden, die später im Prozess verwendet werden soll.
  11. Zuerst beginnt Citrix ADC AAA VIP mit der Verarbeitung des nächsten Faktors, d. h. ein SAML SP to AD FS Proxy VIP auf Citrix ADC.

    Hinweis:

    Citrix ADC ist mit der AD FS-Farm verbunden. Die detaillierten Schritte werden in späteren Abschnitten erläutert.

  12. AD FS Proxy VIP überprüft, ob die Authentifizierungscookies (NSC_TMAA und NSC_TMAS) gesetzt sind. Anschließend wird die SAML-Anforderung an einen Back-End-AD FS-Server gesendet (die Back-End-AD FS-Server sollten auf internen Citrix ADC für hohe Verfügbarkeit und Ausfallsicherheit des Dienstes Lastausgleich sein).
  13. AD FS-Server verarbeitet die SAML-Anforderung. Da die Zugriffsrichtlinie für die Relaying Party auf „Alle Benutzer zulassen und MFA für die Authentifizierung vorschreiben“ festgelegt ist, löst sie den Azure MFA-Authentifizierungsprozess aus.
  14. Azure MFA verarbeitet den Benutzernamen. Wenn es bereits registriert ist, fordert es den Benutzer mit der konfigurierten Methode heraus. Ist dies nicht der Fall, wird der Benutzer aufgefordert, die primären und sekundären Authentifizierungsmethoden zu registrieren und festzulegen.
  15. Sobald der Azure MFA-Authentifizierungsprozess erfolgreich abgeschlossen ist, generiert AD FS eine SAML-Antwort für Citrix Gateway (First Citrix ADC AAA VIP).
  16. Zuerst erhält Citrix ADC AAA VIP eine SAML-Antwort und bestätigt, dass der Authentifizierungsprozess für den Benutzer abgeschlossen ist.
  17. Citrix Gateway sendet Authentifizierungsinformationen an Citrix StoreFront, die alle Anwendungen und Desktops auflistet, für die der Benutzer autorisiert ist. Außerdem verarbeitet er die Gruppenmitgliedschaft des Benutzers, um veröffentlichte Lesezeichen auf Citrix Gateway zu präsentieren.

Authentifizierungsbildschirme

Die meisten der oben genannten Schritte sind nahtlos für Benutzer, da sie intern zwischen verschiedenen VIPs auf dem Citrix ADC stattfinden. Die Benutzererfahrung ist unten dargestellt:

Citrix Gateway Gateway-Anmeldeseite Benutzername Citrix Gateway Gateway-Anmeldeseite Benutzername und Kennwort Bestätigungscode

Implementierung

Microsoft AD FS

Zertifikatanforderungen

Verbundserver benötigen die Zertifikate in der folgenden Tabelle:

Zertifikatstyp Beschreibung Was muss vor der Bereitstellung bekannt sein
SSL-Zertifikat (Secure Sockets Layer) Dies ist ein SSL-Standardzertifikat (Secure Sockets Layer), das zum Sichern der Kommunikation zwischen Verbundservern und Clients verwendet wird. Dieses Zertifikat muss an die Standardwebsite in den Internetinformationsdiensten (IIS) für einen Verbundserver oder einen Verbundserver-Proxy gebunden sein. Für einen Verbundserver-Proxy muss die Bindung in IIS konfiguriert werden, bevor der Verbundserver-Proxykonfigurations-Assistent erfolgreich ausgeführt wird. Empfehlung: Da dieses Zertifikat von Clients von AD FS vertrauenswürdig sein muss, verwenden Sie ein Serverauthentifizierungszertifikat, das von einer öffentlichen Zertifizierungsstelle (Certification Authority, CA) ausgestellt wird. Zum Beispiel Verisign. Tipp: Der Antragstellername dieses Zertifikats wird verwendet, um den Namen des Verbunddienstes für jede Instanz von AD FS darzustellen, die Sie bereitstellen. Aus diesem Grund sollten Sie in Erwägung ziehen, einen Antragstellernamen für neue Zertifizierungsstelle auszuwählen, die den Namen Ihres Unternehmens oder Ihrer Organisation für Partner am besten darstellt.
Service-Kommunikationszertifikat Dieses Zertifikat ermöglicht die WCF-Nachrichtensicherheit für die Sicherung der Kommunikation zwischen Verbundservern. Standardmäßig wird das SSL-Zertifikat als Dienstkommunikationszertifikat verwendet. Dies kann mit der AD FS-Verwaltungskonsole geändert werden.
Tokensignaturzertifikat Dies ist ein Standard-X509-Zertifikat, das zum sicheren Signieren aller Token verwendet wird, die der Verbundserver ausgibt. Das Tokensignaturzertifikat muss einen privaten Schlüssel enthalten, und es sollte zu einem vertrauenswürdigen Stamm im Verbunddienst verkettet werden. Standardmäßig erstellt AD FS ein selbstsigniertes Zertifikat. Sie können dies jedoch später in ein von der Zertifizierungsstelle ausgestelltes Zertifikat ändern, indem Sie das AD FS-Verwaltungs-Snap-In verwenden, je nach den Anforderungen Ihrer Organisation.
Token-Entschlüsselungszertifikat Dies ist ein Standard-SSL-Zertifikat, das verwendet wird, um alle eingehenden Token zu entschlüsseln, die von einem Partnerverbandserver verschlüsselt werden. Es wird auch in den Verbundmetadaten veröffentlicht. Standardmäßig erstellt AD FS ein selbstsigniertes Zertifikat. Sie können dies jedoch später in ein von der Zertifizierungsstelle ausgestelltes Zertifikat ändern, indem Sie das AD FS-Verwaltungs-Snap-In verwenden, je nach den Anforderungen Ihrer Organisation.

Demo-Umgebungskonfiguration

Zertifikatstyp Demo-Umgebungskonfiguration
SSL-Zertifikat (Secure Sockets Layer) Internes Zertifikat, das von der internen ausstellenden Zertifizierungsstelle auf AD FS-Server ausgestellt wurde. Öffentliches vertrauenswürdiges Zertifikat auf Citrix ADC.
Service-Kommunikationszertifikat Internes Zertifikat, ausgestellt von der internen ausstellenden Zertifizierungsstelle von AHS.
Tokensignaturzertifikat Automatisch vom AD FS-Dienst generiert.
Token-Entschlüsselungszertifikat Automatisch vom AD FS-Dienst generiert.

In der Demo-Umgebung wird ein Platzhalterzertifikat registriert und auf dem Server installiert.

Zertifizierungsstelle

Servicekonto Anforderungen

Sie können entweder ein Dienstkonto erstellen oder Gruppenverwaltete Dienstkonten (Group Managed Service Accounts, GMSA) nutzen. Um GMSA verwenden zu können, müssen Sie einen Stammschlüssel für den Schlüsselverteilungsdienst erstellen. Starten Sie PowerShell und führen Sie den folgenden Befehl aus:

Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
<!--NeedCopy-->

Mit diesem Befehl wird ein Stammschlüssel für den Schlüsselverteilungsdienst erstellt, der in Active Directory gespeichert ist, und Sie können ein gMSA (Managed Service Account, GMSA) als AD FS-Dienstkonto erstellen, das Sie später erstellen. Führen Sie diesen Befehl mit Domänenadministratorrechten aus.

Stammschlüssel

Anforderungen an DNS-Einträge

Sie benötigen DNS-A-Eintrag für den AD FS-Verbunddienstnamen intern und extern. In der Demo-Umgebung verweist der interne DNS-Eintrag auf die AD FS-Server-IP und der externe DNS-Eintrag auf die öffentliche Citrix Gateway IP.

Datensatzname Geltungsbereich Typ IP-Adresse
sts.ctxdemox.com Intern A 22.22.22.6
sts.ctxdemox.com Extern A 40.85.225.175

Hinzufügen der AD FS-Rolle und Konfigurieren der AD FS-Farm

Hinzufügen der AD FS-Rolle

Um die AD FS-Rolle zu Windows Server 2016 hinzuzufügen, starten Sie PowerShell, und führen Sie den folgenden Befehl aus:

Install-WindowsFeature AD FS-Federation -IncludeManagementTools
<!--NeedCopy-->

PowerShell Befehl

Konfigurieren der AD FS-Farm

Jetzt können Sie die AD FS-Konfiguration nach der Bereitstellung über den Server-Manager starten. Klicken Sie auf Verbunddienst auf diesem Server konfigurieren.

Konfiguration nach der Bereitstellung

Wählen Sie auf der Seite Willkommen die Option Erster Verbundserver in einer Verbundserverfarm erstellen aus, und klicken Sie dann auf Weiter.

Erstellen des ersten Verbundservers

Stellen Sie auf der Seite Mit Active Directory Domänendienste verbinden sicher, dass das Domänenadministratorkonto angegeben ist, und klicken Sie dann auf Weiter.

Herstellen einer Verbindung mit Active Directory Domänendiensten

Führen Sie auf der Seite Diensteigenschaften angeben die folgenden Schritte aus, und klicken Sie dann auf Weiter:

  • Wählen Sie das Zertifikat aus, das in den vorherigen Schritten auf dem Server installiert wurde.
  • Der Name des Verbunddienstes wird basierend auf dem Antragstellernamen des Zertifikats automatisch ausgefüllt.
  • Geben Sie den Anzeigenamen für den Verbunddienst ein. Zum Beispiel CTXDEMOS STS.

Diensteigenschaften angeben

Wählen Sie auf der Seite Dienstkonto angeben die Option Gruppenverwaltetes Dienstkonto erstellen aus, und geben Sie einen eindeutigen Namen für dieses Konto ein. Gruppenverwaltete Dienstkonten werden ab Windows Server 2012 unterstützt und verfügen über strenge, komplexe Kennwörter, die automatisch alle 30 Tage geändert werden. Klicken Sie auf Weiter.

Erstellen eines gruppenverwalteten Dienstkontos

Wählen Sie auf der Seite Konfigurationsdatenbank angeben den Speicherort einer SQL Server-Datenbank aus. Klicken Sie auf Weiter.

Konfigurationsdatenbank angeben

Überprüfen Sie auf der Seite Überprüfungsoptionen Ihre Konfigurationsauswahl, und klicken Sie dann auf Weiter.

Überprüfungsoptionen

Überprüfen Sie auf der Seite Voraussetzungsprüfungen, ob alle Voraussetzungsprüfungen erfolgreich abgeschlossen wurden, und klicken Sie dann auf Konfigurieren.

Voraussetzungsprüfungen

Stellen Sie auf der Seite Ergebnisse sicher, dass die Installation erfolgreich ist. Klicken Sie auf Schließen, um den Assistenten zu beenden

Konfigurationsergebnisse nach der Bereitstellung

Hinweis:

Um die folgenden Schritte ausführen zu können, benötigen Sie Ihre Azure Mandanten-ID.

Sie können die Azure Tenant ID abrufen, indem Sie die Schritte im Microsoft-Dokumentationsartikel AzureID Tenant Detail abrufenbefolgen.

Die Microsoft-Dokumentation enthält auch Informationen zur Azure MFA-Client-GUID in AD FS 2016 und Azure MFA konfigurieren.

Konfigurieren der AD FS-Farm - automatisiert

Sie können das folgende PowerShell-Skript ausführen:

#
# Windows PowerShell script for AD FS Deployment
#
Import-Module ADFS
Install-AdfsFarm `
-CertificateThumbprint:"BD02F30D90A96EEE4A5934F2EA979E7A052584AE" `
-FederationServiceDisplayName:"CTXDEMOS STS" `
-FederationServiceName:"adfs.ctxdemos.com" `
-GroupServiceAccountIdentifier:"C
<!--NeedCopy-->

Konfigurieren von AD FS mit Azure MFA

Konfigurieren von AD FS-Servern

Starten Sie PowerShell auf jedem Ihrer AD FS-Server, und führen Sie die folgenden Befehle aus:

# Install Windows PowerShell MSOnline Module
Install-Module MSOnline

# Import Windows PowerShell MSOnline Module
Import-Module MSOnline

# Get the Azure Global Administrator credential
$credential = Get-Credential

# Sign in to your Azure Active Directory environment
Connect-MsolService -Credential $credential

# Set a variable for the Azure Tenant name
$azureTenantID = "ctxdemos.onmicrosoft.com"

# Set a variable for the Azure MFA Client GUID
$azureMFAClientGUID = "981f26a1-7f43-403b-a875-f8b09b8cd720"

# Generate a certificate for the Azure MFA on AD FS server
$azureMFACertificate = New-AdfsAzureMfaTenantCertificate -TenantId $azureTenantID

# Add the new credentials to the Azure MFA Client Service Principal
New-MsolServicePrincipalCredential -AppPrincipalId $azureMFAClientGUID -Type asymmetric -Usage verify -
Value $azureMFACertificate
<!--NeedCopy-->

Konfigurieren der AD FS-Farm

Führen Sie nur auf einem der AD FS-Server den folgenden Befehl aus:

Set-AdfsAzureMfaTenant -TenantId $azureTenantID -ClientId $azureMFAClientGUID
<!--NeedCopy-->

Starten Sie den AD FS-Dienst auf jedem Ihrer Server neu. Dann sehen Sie, dass Azure MFA als primäre und mehrstufige Authentifizierungsmethode für die Intranet- und Extranetnutzung verfügbar ist.

Primäre Authentifizierungsmethode

Mehrstufige Authentifizierungsmethode

Konfigurieren von AD FS mit Citrix ADC

Sie müssen eine Verbundvertrauensstellung zwischen AD FS und Citrix ADC erstellen. Navigieren Sie in der AD FS-Verwaltungskonsole zu Vertrauensstellung von vertrauenden Parteien, und wählen Sie Vertrauensstellungvon vertrauenden Parteien hinzufügen aus.

Vertrauensstellung einer vertrauenden Partei hinzufügen

Wählen Sie Daten über die vertrauende Partei manuell eingeben aus, und klicken Sie auf Weiter.

Geben Sie Daten über die vertrauende Partei ein

Geben Sie einen beschreibenden Anzeigenamen und optionalen Notizen ein. Klicken Sie auf Weiter.

Optionale Notizen

Klicken Sie auf Weiter.

Konfigurieren eines Zertifikats

Wählen Sie Unterstützung für das SAML 2.0-WebSSO-Protokoll aktivieren und geben Sie https://CitrixGatewayFQDN/cgi/samlauth ein. In der Demo-Umgebung ist es https://access.ctxdemos.com/cgi/samlauth. Klicken Sie auf Weiter.

Konfigurieren einer URL

Geben Sie eine eindeutige Bezeichnerzeichenfolge für die Vertrauensstellung der vertrauenden Partei ein. In der Demo-Umgebung ist es https://access.ctxdemos.com. Dieser Bezeichner wird als Aussteller-URL im Citrix ADC SAML-Profil verwendet. Klicken Sie auf Weiter.

Konfigurieren eines Bezeichners

Wählen Sie auf der Seite Zugriffssteuerungsrichtlinie auswählen die Option Alle zulassen und MFA erforderlich. Klicken Sie auf Weiter.

Zugriffssteuerungsrichtlinie

Klicken Sie auf Weiter.

Vertrauensstellung hinzufügen

Wählen Sie auf der Seite Fertig stellen die Option Richtlinie zur Anspruchsausstellung für diese Anwendung konfigurieren aus. Klicken Sie auf Schließen.

Fertig stellen

Klicken Sie auf der Seite Ausgabentransformationsregeln auf Regel hinzufügen.

Hinzufügen einer Regel

Klicken Sie auf Weiter.

Wählen Sie eine Vorlage aus

Geben Sie einen beschreibenden Namen in das Feld Anspruchsregelname ein. Wählen Sie unter Attributspeicher die Option Active Directory aus. Wählen Sie dann Folgendes aus: LDAP-Attribute und ausgehende Anspruchstypen.

Konfigurieren einer Regel

Erstellen Sie eine neue Regel, und verwenden Sie die Vorlage Ansprüche mit einer benutzerdefinierten Regel senden als Anspruchsregelvorlage. Geben Sie einen beschreibenden Namen für den Namen der Anspruchsregel ein, und geben Sie die folgende Zeichenfolge für Benutzerdefinierte Regel ein:

=> issue(Type = "logoutURL", Value = "https://access.ctxdemos.com/cgi/tmlogout", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified");
<!--NeedCopy-->

Konfigurieren einer Regel

Wenn die Richtlinien für die Anspruchsausstellung erstellt werden, klicken Sie auf OK.

Klicken Sie mit der rechten Maustaste auf Vertrauensstellung > Citrix ADC, und wählen Sie Eigenschaften aus. Wählen Sie Endpunkte aus, und fügen Sie einen Endpunkt hinzu, indem Sie auf SAML für Abmeldung hinzufügen klicken. Wählen Sie in der Liste Endpunkttyp die Option SAML-Abmeldung aus. Wählen Sie unter Bindung die Option POST aus, und geben Sie für Vertrauenswürdige URL den Eintrag https://sts.ctxdemos.com/adfs/ls/?wa=wsignout1.0 ein. Dies dient als Abmelde-URL beim Abmelden von Citrix ADC. Klicken Sie auf OK.

SAML-Abmeldung

Klicken Sie mit der rechten Maustaste auf Vertrauensstellung > Citrix ADC, und wählen Sie Eigenschaften aus. Wählen Sie Verschlüsselung aus, und fügen Sie ein öffentliches SSL-Zertifikat hinzu, das auf Citrix Gateway installiert ist. Dieses Zertifikat wird verwendet, um eine eingehende SML-Anforderung von Citrix ADC zu entschlüsseln. Wiederholen Sie das gleiche auf der Registerkarte Signatur. Dieses Zertifikat wird verwendet, um die Signatur einer eingehenden SAML-Anfrage zu überprüfen. Klicken Sie auf OK.

IdP initiierte Anmeldeseite aktivieren

Sie können die von AD FS initiierte Anmeldeseite für den IdP aktivieren. Sie verwenden die IdP initiierte Anmeldung, um nicht registrierten MFA-Benutzern eine benutzerdefinierte Fehlerseite anzuzeigen. Führen Sie zum Aktivieren den folgenden Befehl aus:

Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
<!--NeedCopy-->

AD FS-Farm testen

Öffnen Sie einen Webbrowser und navigieren Sie zu:

Citrix ADC und Citrix Gateway

Konfigurieren von Citrix Gateway

Sie können Citrix Gateway über den Assistenten konfigurieren. Melden Sie sich an der Citrix ADC Management-GUI an, navigieren Sie zu Unified Gateway, und klicken Sie auf Neues Gateway erstellen. Klicken Sie dann auf Weiter.

Einzelner öffentlicher Zugang

Geben Sie den Namen, die IP und den FQDN für Unified Gateway ein, und klicken Sie auf Weiter.

Konfigurieren von Citrix Gateway

Wählen Sie das öffentliche SSL-Zertifikat aus, und klicken Sie auf Weiter.

Serverzertifikat

Erstellen Sie eine grundlegende LDAP-Richtlinie und binden Sie sie an Unified Gateway. Klicken Sie auf Weiter.

Authentifizierung

Erstellen Sie ein Portal-Design basierend auf RFWebUI und binden Sie es an Unified Gateway. Klicken Sie auf Weiter.

Portal-Thema

Wählen Sie das Pluszeichen (+) vor den Anwendungen aus, um Citrix Gateway in StoreFront zu integrieren.

Gateway mit StoreFront integrieren

Integration von Citrix StoreFront in Citrix Gateway

Wählen Sie auf der Seite Anwendung XenApp & XenDesktop aus, und wählen Sie in der Liste Integrationspunkt auswählen die Option StoreFront aus. Klicken Sie auf Weiter.

Mehrere Einstellungen auswählen

Geben Sie eine StoreFront URL ein und klicken Sie auf Stores abrufen. Geben Sie dann die URL-Einstellungen für Active Directory Standarddomäne und Secure Ticket Authority ein. Klicken Sie auf STA Konnektivität testen und dann auf Weiter.

Konnektivität testen

Klicken Sie auf Fertig, und klicken Sie dann auf Weiter.

Continue

Konfigurieren von Citrix Gateway und Integration mit StoreFront — CLI

# Create Session Policy and Action for Citrix Receiver
add vpn sessionAction AC_OS_22.22.44.50 -transparentInterception OFF -defaultAuthorizationAction ALLOW -SSO ON -icaProxy ON -wihome "https://access.ctxdemos.com/Citrix/ExternalWeb" -ClientChoices OFF -ntDomain CTXDEMOS -clientlessVpnMode OFF -storefronturl "https://access.ctxdemos.com"
add vpn sessionPolicy PL_OS_22.22.44.50 "HTTP.REQ.HEADER("User-Agent").CONTAINS("CitrixReceiver") && HTTP.REQ.HEADER("User-Agent").CONTAINS("CitrixVPN").NOT && HTTP.REQ.HEADER("User-Agent").CONTAINS("NSGiOSplugin").NOT" AC_OS_22.22.44.50

# Create Session Policy and Action for Citrix Web Client
add vpn sessionAction AC_WB_22.22.44.50 -transparentInterception ON -defaultAuthorizationAction ALLOW -forceCleanup cookie -SSO ON -ssoCredential PRIMARY -icaProxy OFF -wihome "https://storefront.ctxdemos.com/Citrix/ExternalWeb" -wiPortalMode COMPACT -ClientChoices OFF -ntDomain CTXDEMOS -clientlessVpnMode ON -clientlessPersistentCookie ALLOW
add vpn sessionPolicy PL_WB_22.22.44.50 "HTTP.REQ.HEADER("User-Agent").CONTAINS("CitrixReceiver").NOT" AC_WB_22.22.44.50

# Create Session Policy and Action for Citrix Gateway Client
add vpn sessionAction UG_VPN_SAct_22.22.44.50 -transparentInterception ON -defaultAuthorizationAction ALLOW -SSO ON -ClientChoices ON -clientlessVpnMode ON
add vpn sessionPolicy UG_VPN_SPol_22.22.44.50 true UG_VPN_SAct_22.22.44.50

# Create Responder Policy and Action for Gateway Logout
add responder action RESACT_GATEWAY_LOGOFF_REDIRECT redirect ""https://" + HTTP.REQ.HOSTNAME.HTTP_URL_SAFE" -responseStatusCode 302
add responder policy RESPOL_GATEWAY_LOGOFF_REDIRECT "HTTP.REQ.URL.CONTAINS("/cgi/logout")" RESACT_GATEWAY_LOGOFF_REDIRECT

# Create Citrix Gateway vServer
add vpn vserver UGVS_VPN_UGCTXDEMOS SSL 0.0.0.0 -loginOnce ON -Listenpolicy NONE -vserverFqdn access.ctxdemos.com
set ssl vserver UGVS_VPN_UGCTXDEMOS -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind ssl vserver UGVS_VPN_UGCTXDEMOS -certkeyName CTXDEMOS_PUBLIC_CERT
bind ssl vserver UGVS_VPN_UGCTXDEMOS -cipherName CTXDEMOS_FRONTEND_APLUS
bind vpn vserver UGVS_VPN_UGCTXDEMOS -portaltheme CTXDEMOS_PORTAL
bind vpn vserver UGVS_VPN_UGCTXDEMOS -staServer "https://wsctxdc01.ctxdemos.com"
bind vpn vserver UGVS_VPN_UGCTXDEMOS -policy RESPOL_GATEWAY_LOGOFF_REDIRECT -priority 100 -gotoPriorityExpression END -type REQUEST
bind vpn vserver UGVS_VPN_UGCTXDEMOS -policy PL_OS_22.22.44.50 -priority 100 -gotoPriorityExpression NEXT -type REQUEST
bind vpn vserver UGVS_VPN_UGCTXDEMOS -policy PL_WB_22.22.44.50 -priority 110 -gotoPriorityExpression NEXT -type REQUEST
bind vpn vserver UGVS_VPN_UGCTXDEMOS -policy UG_VPN_SPol_22.22.44.50 -priority 58000 -gotoPriorityExpression NEXT -type REQUEST

# Create Content Switching Policy and Action for Citrix Gateway
add cs action CSACT_UGCTXDEMOS -targetVserver UGVS_VPN_UGCTXDEMOS
add cs policy CSPOL_UGCTXDEMOS -rule "is_vpn_url  ||  HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).STARTSWITH("/Citrix/External")" -action CSACT_UGCTXDEMOS

# Create Content Switching vServer for Citrix Gateway
add cs vserver CSVS_UGCTXDEMOS SSL 22.22.44.50 443 -cltTimeout 180
set ssl vserver CSVS_UGCTXDEMOS -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind ssl vserver CSVS_UGCTXDEMOS -certkeyName CTXDEMOS_PUBLIC_CERT
bind ssl vserver CSVS_UGCTXDEMOS -cipherName CTXDEMOS_FRONTEND_APLUS
bind cs vserver CSVS_UGCTXDEMOS -policyName CSPOL_UGCTXDEMOS -priority 63000

# Create Responder Policy and Action for HTTP to HTTPS Redirection
add responder action RESACT_HTTP_TO_HTTPS redirect ""https://" + HTTP.REQ.HOSTNAME.HTTP_URL_SAFE + HTTP.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE" -responseStatusCode 301
add responder policy RESPOL_HTTP_TO_HTTPS HTTP.REQ.IS_VALID RESACT_HTTP_TO_HTTPS

# Create Always On Server and Service
add server LBSRV_ALWAYS_UP 127.0.0.1
add service LBSVC_ALWAYS_UP LBSRV_ALWAYS_UP HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip ENABLED cip-header -usip YES -useproxyport YES -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO

# Create Always On vServer for Citrix Gateway
add lb vserver CSVS_UGCTXDEMOS_REDIRECT_HTTP_TO_HTTPS HTTP 22.22.44.50 80 -persistenceType NONE -cltTimeout 180
bind lb vserver CSVS_UGCTXDEMOS_REDIRECT_HTTP_TO_HTTPS LBSVC_ALWAYS_UP
bind lb vserver CSVS_UGCTXDEMOS_REDIRECT_HTTP_TO_HTTPS -policyName RESPOL_HTTP_TO_HTTPS -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

Konfigurieren des ersten Authentifizierungsservers

# Create Initialization SAML SP Policy and Action and Bind it to Citrix ADC AAA Authentication vServer
add authentication samlAction AUTH_ACT_SAML_SP_VPN_TO_LB -samlIdPCertName CTXDEMOS_PUBLIC_CERT -samlSigningCertName CTXDEMOS_PUBLIC_CERT -samlRedirectUrl "https://access.ctxdemos.com/samltolb" -signatureAlg RSA-SHA256 -digestMethod SHA256 -samlBinding REDIRECT -groupNameField Groups
add authentication Policy AUTH_POL_SAMP_SP_VPN_TO_LB -rule TRUE -action AUTH_ACT_SAML_SP_VPN_TO_LB

# Create Authentication Policy and Action for SAML SP to ADFS
add authentication samlAction AUTH_ACT_SAML_SP_ADFS -samlIdPCertName CTXDEMOS_ADFS_TOKEN_SIGNING -samlSigningCertName CTXDEMOS_PUBLIC_CERT -samlRedirectUrl "https://sts.ctxdemos.com/adfs/ls/" -samlUserField "Name ID" -samlRejectUnsignedAssertion OFF -samlIssuerName "https://access.ctxdemos.com" -Attribute1 "E-Mail Address" -signatureAlg RSA-SHA256 -digestMethod SHA256 -logoutURL "https://sts.ctxdemos.com/adfs/ls/wa=wsignout1.0" -forceAuthn ON
add authentication Policy AUTH_POL_SAML_SP_ADFS -rule TRUE -action AUTH_ACT_SAML_SP_ADFS

# Create Authentication Policy Label for for SAML SP to ADFS
add authentication policylabel AUTH_POLLBL_ADFS_AZUREMFA -loginSchema LSCHEMA_INT
bind authentication policylabel AUTH_POLLBL_ADFS_AZUREMFA -policyName AUTH_POL_SAML_SP_ADFS -priority 100 -gotoPriorityExpression NEXT

# Create Authentication Policy and Action for Group Extraction
add authentication ldapAction AUTH_ACT_LDAP_GROUP_EXTRACTION_AZUREMFACA -serverIP 22.22.22.61 -serverPort 636 -ldapBase "DC=ctxdemos,DC=com" -ldapBindDn "CN=svc_ctxadc01,OU=Services,OU=Accounts,DC=ctxdemos,DC=com" -ldapBindDnPassword 0c4fe86d56a865ef514a15affd1429f3e079ce1089731d4a407772d21036f3c8 -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -searchFilter "memberOf:1.2.840.113556.1.4.1941:=CN=AzureMFACAUsers,OU=Groups,OU=Authorizations,DC=ctxdemos,DC=com" -groupAttrName memberOf -subAttributeName cn -secType SSL -authentication DISABLED -nestedGroupExtraction ON -maxNestingLevel 5 -groupNameIdentifier sAMAccountName -groupSearchAttribute memberOf -groupSearchSubAttribute CN -Attribute1 mail -Attribute2 objectGUID
add authentication Policy AUTH_POL_LDAP_GROUP_EXTRACTION_AZURAMFACA -rule TRUE -action AUTH_ACT_LDAP_GROUP_EXTRACTION_AZUREMFACA

# Create Authentication Policy Label for Group Extraction
add authentication policylabel AUTH_POLLBL_LDAP_GROUP_EXTRACTION_AZURAMFACA -loginSchema LSCHEMA_INT
bind authentication policylabel AUTH_POLLBL_LDAP_GROUP_EXTRACTION_AZURAMFACA -policyName AUTH_POL_LDAP_GROUP_EXTRACTION_AZURAMFACA -priority 100 -gotoPriorityExpression NEXT -nextFactor AUTH_POLLBL_ADFS_AZUREMFA


# Create Login Schema Policy and Profile for First Citrix ADC AAA Authentication vServer
add authentication loginSchema LSCHEMA_PRF_NOSCHEMA -authenticationSchema noschema -SSOCredentials YES
add authentication loginSchemaPolicy LSCHEMA_POL_NOSCHEMA -rule TRUE -action LSCHEMA_PRF_NOSCHEMA

# Create First Citrix ADC AAA Authentication vServer
add authentication vserver AAAVS_CTXDEMOS_COM_FOR_VPN SSL 0.0.0.0
set ssl vserver AAAVS_CTXDEMOS_COM_FOR_VPN -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind ssl vserver AAAVS_CTXDEMOS_COM_FOR_VPN -certkeyName CTXDEMOS_PUBLIC_CERT
bind ssl vserver AAAVS_CTXDEMOS_COM_FOR_VPN -cipherName CTXDEMOS_FRONTEND_APLUS
bind authentication vserver AAAVS_CTXDEMOS_COM_FOR_VPN -policy LSCHEMA_POL_NOSCHEMA -priority 100 -gotoPriorityExpression END
bind authentication vserver AAAVS_CTXDEMOS_COM_FOR_VPN -policy AUTH_POL_SAMP_SP_VPN_TO_LB -priority 100 -nextFactor AUTH_POLLBL_LDAP_GROUP_EXTRACTION_AZURAMFACA -gotoPriorityExpression NEXT

# Create First Citrix ADC AAA Authentication Profile
add authentication authnProfile AAA_AUTH_PRF_VPN -authnVsName AAAVS_CTXDEMOS_COM_FOR_VPN -AuthenticationHost aaa.ctxdemos.com

# Set Authentication Profile on Gateway vServer
set vpn vserver UGVS_VPN_UGCTXDEMOS -authnProfile AAA_AUTH_PRF_VPN
<!--NeedCopy-->

Konfigurieren eines zweiten Authentifizierungsservers

# Create Authentication Policy and Action for LDAP
add authentication ldapAction AUTH_ACT_LDAP -serverIP 22.22.22.61 -serverPort 636 -authTimeout 60 -ldapBase "DC=ctxdemos,DC=com" -ldapBindDn "CN=svc_ctxadc01,OU=Services,OU=Accounts,DC=ctxdemos,DC=com" -ldapBindDnPassword 273881819af883e70c33d83c0546eac84e81d6eeba904f2d65bbebf2819c025a -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberOf -subAttributeName cn -secType SSL -passwdChange ENABLED -nestedGroupExtraction ON -maxNestingLevel 5 -groupNameIdentifier sAMAccountName -groupSearchAttribute memberOf -groupSearchSubAttribute CN -Attribute1 userprincipalname -Attribute2 mail -Attribute3 userParameters
add authentication Policy AUTH_POL_LDAP_USER_NAME_PASSWORD -rule TRUE -action AUTH_ACT_LDAP

# Create Login Schema Policy and Profile for Second Citrix ADC AAA Authentication vServer - Username (Pre-filled ) and Password
add authentication loginSchema LSCHEMA_USER_NAME_PASSWORD -authenticationSchema "/nsconfig/loginschema/CTXDEMOS_USER_NAME_PASS.xml" -SSOCredentials YES
add authentication loginSchemaPolicy LSCHEMA_POL_USER_NAME_PASSWORD -rule TRUE -action LSCHEMA_USER_NAME_PASSWORD

# Create Authentication Policy Label for LDAP Username and Password
add authentication policylabel AUTH_POLLBL_LDAP_USER_NAME_PASSWORD -loginSchema LSCHEMA_USER_NAME_PASSWORD
bind authentication policylabel AUTH_POLLBL_LDAP_USER_NAME_PASSWORD -policyName AUTH_POL_LDAP_USER_NAME_PASSWORD -priority 110 -gotoPriorityExpression NEXT

# Create Login Schema Policy and Profile for Second Citrix ADC AAA Authentication vServer - Username Only
add authentication loginSchema LSCHEMA_USER_NAME_ONLY -authenticationSchema "/nsconfig/loginschema/CTXDEMOS_USER_NAME_ONLY.xml"
add authentication loginSchemaPolicy LSCHEMA_POL_NOPASSWORD -rule TRUE -action LSCHEMA_USER_NAME_ONLY

# Create Citrix ADC AAA Session Policy and Profile
add tm sessionAction AAA_SESSION_PRF_CTXDEMOS -SSO ON -ssoDomain CTXDEMOS -persistentCookie ON -persistentCookieValidity 30
add tm sessionPolicy AAA_SESSION_POL_CTXDEMOS TRUE AAA_SESSION_PRF_CTXDEMOS

# Create Second Citrix ADC AAA Authentication vServer
add authentication vserver AAAVS_CTXDEMOS_COM SSL 22.22.44.51 443
set ssl vserver AAAVS_CTXDEMOS_COM -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind ssl vserver AAAVS_CTXDEMOS_COM -certkeyName CTXDEMOS_PUBLIC_CERT
bind ssl vserver AAAVS_CTXDEMOS_COM -cipherName CTXDEMOS_FRONTEND_APLUS
bind authentication vserver AAAVS_CTXDEMOS_COM -portaltheme CTXDEMOS_PORTAL
bind authentication vserver AAAVS_CTXDEMOS_COM -policy AAA_SESSION_POL_CTXDEMOS -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver AAAVS_CTXDEMOS_COM -policy LSCHEMA_POL_NOPASSWORD -priority 110 -gotoPriorityExpression END
bind authentication vserver AAAVS_CTXDEMOS_COM -policy AUTH_POL_LDAP_GROUP_EXTRACTION_AZURAMFACA -priority 140 -nextFactor AUTH_POLLBL_LDAP_USER_NAME_PASSWORD -gotoPriorityExpression NEXT

# Create Second Citrix ADC AAA Authentication Profile
add authentication authnProfile AAA_AUTH_PRF -authnVsName AAAVS_CTXDEMOS_COM -AuthenticationHost aaa.ctxdemos.com
<!--NeedCopy-->

Konfigurieren von Citrix ADC als AD FS WAP

Führen Sie die folgenden Befehle in Citrix ADC CLI aus, um Citrix ADC als AD FS Web Application Proxy (WAP) zu konfigurieren:

# Pattern Set - ADFS Proxy Hostname
add policy patset PATSET_ADFS_HOSTNAME
bind policy patset PATSET_ADFS_HOSTNAME sts.ctxdemos.com -index 1 -charset ASCII
# Policy Expression - ADFS Proxy Hostname
add policy expression is_ADFS_HOSTNAME "HTTP.REQ.HEADER("Host").TO_LOWER.CONTAINS_ANY("PATSET_ADFS_HOSTNAME")"

# Pattern Set - ADFS Proxy Path for NoAuth
add policy patset PATSET_ADFS_PATH_NOAUTH
bind policy patset PATSET_ADFS_PATH_NOAUTH "/adfs/services/trust" -index 1 -charset ASCII
bind policy patset PATSET_ADFS_PATH_NOAUTH "/federationmetadata/2007-06/federationmetadata.xml" -index 2 -charset ASCII
bind policy patset PATSET_ADFS_PATH_NOAUTH "/adfs/fs/federationserverservice.asmx" -index 3 -charset ASCII
bind policy patset PATSET_ADFS_PATH_NOAUTH "/adfs/ls/FormsSignIn.aspx" -index 4 -charset ASCII
bind policy patset PATSET_ADFS_PATH_NOAUTH "/adfs/services/trust/2005/usernamemixed" -index 5 -charset ASCII
bind policy patset PATSET_ADFS_PATH_NOAUTH "/adfs/services/trust/mex" -index 6 -charset ASCII

# Policy Expression - ADFS Proxy Path for NoAuth
add policy expression is_ADFS_PROXY_NOAUTH "HTTP.REQ.URL.PATH.TO_LOWER.CONTAINS_ANY("PATSET_ADFS_PATH_NOAUTH")"

# Pattern Set - ADFS Proxy Path for Passive Client
add policy patset PATSET_ADFS_PATH_ACTIVE_PASSIVE
bind policy patset PATSET_ADFS_PATH_ACTIVE_PASSIVE "/adfs" -index 1 -charset ASCII
bind policy patset PATSET_ADFS_PATH_ACTIVE_PASSIVE "/cgi/selfauth" -index 2 -charset ASCII

# Policy Expression - ADFS Proxy Path for Passive Client
add policy expression is_ADFS_PROXY_ACTIVE_PASSIVE "(HTTP.REQ.HEADER("Host").TO_LOWER.CONTAINS_ANY("PATSET_ADFS_HOSTNAME") && HTTP.REQ.URL.PATH.TO_LOWER.STARTSWITH_ANY("PATSET_ADFS_PATH_ACTIVE_PASSIVE"))"

# Rewrite Policies for ADFS PIP
add rewrite action RWACT_X_MS_Proxy insert_http_header X-MS-Proxy ""NETSCALER""
add rewrite policy RWPOL_X_MS_Proxy true RWACT_X_MS_Proxy

add rewrite action RWACT_X_MS_Forwarded_Client_IP insert_http_header X-MS-Forwarded-Client-IP CLIENT.IP.SRC
add rewrite policy RWPOL_X_MS_Forwarded_Client_IP true RWACT_X_MS_Forwarded_Client_IP

add rewrite action RWACT_X_MS_Endpoint_Absolute_Path insert_http_header X-MS-Endpoint-Absolute-Path HTTP.REQ.URL
add rewrite policy RWPOL_X_MS_Endpoint_Absolute_Path true RWACT_X_MS_Endpoint_Absolute_Path

add rewrite action RWACT_X_MS_Target_Role insert_http_header X-MS-Target-Role ""PrimaryComputer""
add rewrite policy RWPOL_X_MS_Target_Role true RWACT_X_MS_Target_Role

add rewrite action RWACT_X_MS_ADFS_Proxy_Client_IP insert_http_header X-MS-ADFS-Proxy-Client-IP CLIENT.IP.SRC
add rewrite policy RWPOL_X_MS_ADFS_Proxy_Client_IP true RWACT_X_MS_ADFS_Proxy_Client_IP

add rewrite action RWACT_X_MS_Client_User_Agent insert_http_header X-MS-Client-User-Agent "HTTP.REQ.HEADER("User-Agent")"
add rewrite policy RWPOL_X_MS_Client_User_Agent true RWACT_X_MS_Client_User_Agent

add rewrite action RWACT_ADFS_PROXYMEX replace HTTP.REQ.URL.PATH_AND_QUERY ""/adfs/services/trust/proxymex" + HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE).PATH_AND_QUERY.STRIP_START_CHARS("/adfs/services/trust/mex").HTTP_URL_SAFE"
add rewrite policy RWPOL_ADFS_PROXYMEX "is_ADFS_HOSTNAME && HTTP.REQ.URL.TO_LOWER.STARTSWITH("/adfs/services/trust/mex")" RWACT_ADFS_PROXYMEX

add rewrite policy RWPOL_ADFS_PROXY_HEADERS-NOACT TRUE NOREWRITE

add rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS http_req
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_Proxy 100 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_Forwarded_Client_IP 110 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_Endpoint_Absolute_Path 120 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_Target_Role 130 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_ADFS_Proxy_Client_IP 140 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_X_MS_Client_User_Agent 150 NEXT
bind rewrite policylabel RWPOLLBL_ADFS_PROXY_HEADERS RWPOL_ADFS_PROXYMEX 160 NEXT

# Create ADFS Server and Service Group
add server LBSRV_ADFS wsadfs01.ctxdemos.com
add serviceGroup LBSVCGRP_ADFS_443 SSL -maxClient 0 -maxReq 0 -cip ENABLED X-MS-Forwarded-Client-IP -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP YES
bind ssl serviceGroup LBSVCGRP_ADFS_443 -cipherName CTXDEMO_BACKEND
set ssl serviceGroup LBSVCGRP_ADFS_443 -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED
bind serviceGroup LBSVCGRP_ADFS_443 LBSRV_ADFS 443

# Create ADFS Proxy NoAuth Load Balancing vServer
add lb vserver LBVS_ADFS_PROXY_NOAUTH SSL 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
set ssl vserver LBVS_ADFS_PROXY_NOAUTH -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind ssl vserver LBVS_ADFS_PROXY_NOAUTH -certkeyName CTXDEMOS-PUBLIC
bind ssl vserver LBVS_ADFS_PROXY_NOAUTH -cipherName CTXDEMO_BACKEND
bind lb vserver LBVS_ADFS_PROXY_NOAUTH LBSVCGRP_ADFS_443
bind lb vserver LBVS_ADFS_PROXY_NOAUTH -policyName RWPOL_ADFS_PROXY_HEADERS-NOACT -priority 100 -gotoPriorityExpression NEXT -type REQUEST -invoke policylabel RWPOLLBL_ADFS_PROXY_HEADERS

# Create ADFS Proxy NoAuth Content Switching Policy and Action
add cs action CSACT_ADFS_PROXY_NOAUTH -targetLBVserver LBVS_ADFS_PROXY_NOAUTH
add cs policy CSPOL_ADFS_PROXY_NOAUTH -rule is_ADFS_PROXY_NOAUTH -action CSACT_ADFS_PROXY_NOAUTH

# Create ADFS Proxy Active-Passive Load Balancing vServer
add lb vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE SSL 0.0.0.0 0 -persistenceType NONE -cltTimeout 180 -Authentication ON -authnProfile AAA_AUTH_PRF
set ssl vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind lb vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE LBSVCGRP_ADFS_443
bind ssl vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -certkeyName CTXDEMOS-PUBLIC
bind ssl vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -cipherName CTXDEMO_FRONTEND_APLUS
bind lb vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -policyName RWPOL_ADFS_PROXY_HEADERS-NOACT -priority 100 -gotoPriorityExpression NEXT -type REQUEST -invoke policylabel RWPOLLBL_ADFS_PROXY_HEADERS

# Create ADFS Proxy Active-Passive Content Switching Policy and Action
add cs action CSACT_ADFS_PROXY_ACTIVE_PASSIVE -targetLBVserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE
add cs policy CSPOL_ADFS_PROXY_ACTIVE_PASSIVE -rule is_ADFS_PROXY_ACTIVE_PASSIVE -action CSACT_ADFS_PROXY_ACTIVE_PASSIVE

# Bind Content Switching Policies to Citrix Gateway Content Switching vServer
bind cs vserver CSVS_UGCTXDEMOS -policyName CSPOL_ADFS_PROXY_NOAUTH -priority 100
bind cs vserver CSVS_UGCTXDEMOS -policyName CSPOL_ADFS_PROXY_ACTIVE_PASSIVE -priority 300

# Create Citrix ADC AAA Traffic Policies and Bind them to ADFS Proxy Active-Passive Load Balancing vServer
add tm formSSOAction AAATM_SSOPRF_ADFS_LOGIN -actionURL "/adfs/ls" -userField UserName -passwdField Password -ssoSuccessRule true -nameValuePair AuthMethod=FormsAuthentication -responsesize 15000 -submitMethod POST
add tm trafficAction AAATM_PRF_ADFS_LOGIN -appTimeout 1 -SSO ON -formSSOAction AAATM_SSOPRF_ADFS_LOGIN -persistentCookie OFF -InitiateLogout OFF -kcdAccount NONE -userExpression "HTTP.REQ.USER.ATTRIBUTE(3)" -passwdExpression "HTTP.REQ.USER.ATTRIBUTE(2)"
add tm trafficPolicy AAATM_POL_ADFS_LOGIN "HTTP.REQ.URL.TO_LOWER.STARTSWITH("/adfs/ls")" AAATM_PRF_ADFS_LOGIN
add tm trafficAction AAATM_PRF_ADFS_LOGOUT -appTimeout 1 -persistentCookie OFF -InitiateLogout ON -kcdAccount NONE
add tm trafficPolicy AAATM_POL_ADFS_LOGOUT "HTTP.REQ.URL.TO_LOWER.STARTSWITH("/adfs/ls") && HTTP.REQ.URL.QUERY.VALUE("wa").EQ("wsignout1.0")" AAATM_PRF_ADFS_LOGOUT
bind lb vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -policyName AAATM_POL_ADFS_LOGIN -priority 100 -gotoPriorityExpression END -type REQUEST
bind lb vserver LBVS_ADFS_PROXY_ACTIVE_PASSIVE -policyName AAATM_POL_ADFS_LOGOUT -priority 110 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

Konfigurieren eines anfänglichen Authentifizierungsflusses

# Pattern Set - Gateway and AAA Hostname
add policy patset PATSET_GATEWAY_HOSTHEADER
bind policy patset PATSET_GATEWAY_HOSTHEADER access.ctxdemos.com -index 1 -charset ASCII
bind policy patset PATSET_GATEWAY_HOSTHEADER aaa.ctxdemos.com -index 2 -charset ASCII
# Policy Expression - Gateway and AAA Hostname
add policy expression is_GATEWAY_HOSTNAME "HTTP.REQ.HEADER("Host").TO_LOWER.CONTAINS_ANY("PATSET_GATEWAY_HOSTHEADER")"

# Create Initialization Load Balancing vServer
add lb vserver LBVS_SAML_SP_INITIALIZATION SSL 0.0.0.0 0 -persistenceType NONE -cltTimeout 180 -Authentication ON -authnProfile AAA_AUTH_PRF
set ssl vserver LBVS_SAML_SP_INITIALIZATION -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls13 ENABLED -ocspStapling ENABLED -HSTS ENABLED -maxage 157680000 -IncludeSubdomains YES
bind lb vserver LBVS_SAML_SP_INITIALIZATION LBSVC_ALWAYS_UP
bind ssl vserver LBVS_SAML_SP_INITIALIZATION -certkeyName CTXDEMOS_PUBLIC_CERT
bind ssl vserver LBVS_SAML_SP_INITIALIZATION -cipherName CTXDEMOS_FRONTEND_APLUS

# Create Initialization Content Switching Policy and Action
add cs action CSACT_SAML_SP_INITIALIZATION -targetLBVserver LBVS_SAML_SP_INITIALIZATION
add cs policy CSPOL_SAML_SP_INITIALIZATION -rule "is_GATEWAY_HOSTNAME && HTTP.REQ.URL.PATH.TO_LOWER.STARTSWITH("/samltolb")" -action CSACT_SAML_SP_INITIALIZATION

# Bind Content Switching Policies to Citrix Gateway Content Switching vServer
bind cs vserver CSVS_UGCTXDEMOS -policyName CSPOL_SAML_SP_INITIALIZATION -priority 500

# Create Initialization Citrix ADC AAA Traffic Policy and Action and Bind it to Load Balancing vServer
add tm samlSSOProfile AAATM_SAMLSSOPRF_VPN_TO_LB -samlSigningCertName CTXDEMOS_PUBLIC_CERT -assertionConsumerServiceURL "https://access.ctxdemos.com/cgi/samlauth" -relaystateRule "HTTP.REQ.URL.QUERY.VALUE("RelayState")" -signatureAlg RSA-SHA256 -digestMethod SHA256 -Attribute1 Password -Attribute1Expr AAA.USER.PASSWD -Attribute2 Groups -Attribute2Expr AAA.USER.GROUPS -encryptAssertion ON -samlSPCertName CTXDEMOS_PUBLIC_CERT
add tm trafficAction AAATM_PRF_VPN_TO_LB -SSO ON -persistentCookie OFF -InitiateLogout OFF -kcdAccount NONE -samlSSOProfile AAATM_SAMLSSOPRF_VPN_TO_LB
add tm trafficPolicy AAATM_POL_VPN_TO_LB "HTTP.REQ.URL.STARTSWITH("/samltolb")" AAATM_PRF_VPN_TO_LB
bind lb vserver LBVS_SAML_SP_INITIALIZATION -policyName AAATM_POL_VPN_TO_LB -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

Cipher-Gruppen

# Create Cipher Group for Backend vServers
add ssl cipher CTXDEMOS_BACKEND
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.3-AES256-GCM-SHA384 -cipherPriority 1
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.3-CHACHA20-POLY1305-SHA256 -cipherPriority 2
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.3-AES128-GCM-SHA256 -cipherPriority 3
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384 -cipherPriority 4
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.2-ECDHE-RSA-AES128-GCM-SHA256 -cipherPriority 5
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384 -cipherPriority 6
bind ssl cipher CTXDEMOS_BACKEND -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256 -cipherPriority 7

# Create Cipher Group for Frondend vServers
add ssl cipher CTXDEMOS_FRONTEND
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.3-AES256-GCM-SHA384 -cipherPriority 1
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.3-CHACHA20-POLY1305-SHA256 -cipherPriority 2
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.3-AES128-GCM-SHA256 -cipherPriority 3
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256 -cipherPriority 4
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384 -cipherPriority 5
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-ECDSA-AES128-SHA256 -cipherPriority 6
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-ECDSA-AES256-SHA384 -cipherPriority 7
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-ECDHE-ECDSA-AES128-SHA -cipherPriority 8
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-ECDHE-ECDSA-AES256-SHA -cipherPriority 9
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-RSA-AES128-GCM-SHA256 -cipherPriority 10
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384 -cipherPriority 11
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-RSA-AES-128-SHA256 -cipherPriority 12
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-ECDHE-RSA-AES-256-SHA384 -cipherPriority 13
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-ECDHE-RSA-AES128-SHA -cipherPriority 15
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-ECDHE-RSA-AES256-SHA -cipherPriority 16
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-DHE-RSA-AES128-GCM-SHA256 -cipherPriority 17
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384 -cipherPriority 18
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-DHE-RSA-AES-128-CBC-SHA -cipherPriority 19
bind ssl cipher CTXDEMOS_FRONTEND -cipherName TLS1-DHE-RSA-AES-256-CBC-SHA -cipherPriority 20

# Create Cipher Group for Frondend vServers - A+
add ssl cipher CTXDEMOS_FRONTEND_APLUS
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.3-AES256-GCM-SHA384 -cipherPriority 1
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.3-CHACHA20-POLY1305-SHA256 -cipherPriority 2
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.3-AES128-GCM-SHA256 -cipherPriority 3
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384 -cipherPriority 4
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256 -cipherPriority 5
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-ECDSA-CHACHA20-POLY1305 -cipherPriority 6
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-ECDSA-AES256-SHA384 -cipherPriority 7
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-ECDSA-AES128-SHA256 -cipherPriority 8
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384 -cipherPriority 9
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-RSA-AES128-GCM-SHA256 -cipherPriority 13
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-RSA-CHACHA20-POLY1305 -cipherPriority 14
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-RSA-AES-256-SHA384 -cipherPriority 15
bind ssl cipher CTXDEMOS_FRONTEND_APLUS -cipherName TLS1.2-ECDHE-RSA-AES-128-SHA256 -cipherPriority 16
<!--NeedCopy-->

Anmeldeschema-XML-Datei

CTXDEMOS_USER_NAME_PASS.XML

<?xml version="1.0" encoding="utf-8"?>
<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1">
    <Status>success</Status>
    <Result>more-info</Result>
    <StateContext/>
    <AuthenticationRequirements>
        <PostBack>/nf/auth/doAuthentication.do</PostBack>
        <CancelPostBack>/Citrix/Authentication/ExplicitForms/CancelAuthenticate</CancelPostBack>
        <CancelButtonText>Cancel</CancelButtonText>
        <Requirements>
            <Requirement>
                <Credential>
                    <ID>login</ID>
                    <SaveID>ExplicitForms-Username</SaveID>
                    <Type>username</Type>
                </Credential>
                <Label>
                    <Text>User name</Text>
                    <Type>plain</Type>
                </Label>
                <Input>
                    <AssistiveText>Please supply username</AssistiveText>
                    <Text>
                        <Secret>false</Secret>
                        <ReadOnly>false</ReadOnly>
                        <InitialValue>${AAA.USER.NAME}</InitialValue>
                        <Constraint>.+</Constraint>
                    </Text>
                </Input>
            </Requirement>
            <Requirement>
                <Credential>
                    <ID>passwd</ID>
                    <SaveID>ExplicitForms-Password</SaveID>
                    <Type>password</Type>
                </Credential>
                <Label>
                    <Text>Password:</Text>
                    <Type>plain</Type>
                </Label>
                <Input>
                    <Text>
                        <Secret>true</Secret>
                        <ReadOnly>false</ReadOnly>
                        <InitialValue/>
                        <Constraint>.+</Constraint>
                    </Text>
                </Input>
            </Requirement>
            <Requirement>
                <Credential>
                    <ID>saveCredentials</ID>
                    <Type>savecredentials</Type>
                </Credential>
                <Label>
                    <Text>Remember my password</Text>
                    <Type>plain</Type>
                </Label>
                <Input>
                    <CheckBox>
                        <InitialValue>false</InitialValue>
                    </CheckBox>
                </Input>
            </Requirement>
            <Requirement>
                <Credential>
                    <ID>loginBtn</ID>
                    <Type>none</Type>
                </Credential>
                <Label>
                    <Type>none</Type>
                </Label>
                <Input>
                    <Button>Log On</Button>
                </Input>
            </Requirement>
        </Requirements>
    </AuthenticationRequirements>
</AuthenticateResponse>
<!--NeedCopy-->

CTXDEMOS_USER_NAME_ONLY.XML

<?xml version="1.0" encoding="utf-8"?>
<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1">
    <Status>success</Status>
    <Result>more-info</Result>
    <StateContext/>
    <AuthenticationRequirements>
        <PostBack>/nf/auth/doAuthentication.do</PostBack>
        <CancelPostBack>/Citrix/Authentication/ExplicitForms/CancelAuthenticate</CancelPostBack>
        <CancelButtonText>Cancel</CancelButtonText>
        <Requirements>
            <Requirement>
                <Credential>
                    <ID>login</ID>
                    <SaveID>ExplicitForms-Username</SaveID>
                    <Type>username</Type>
                </Credential>
                <Label>
                    <Text>User name</Text>
                    <Type>plain</Type>
                </Label>
                <Input>
                    <AssistiveText>Please supply username</AssistiveText>
                    <Text>
                        <Secret>false</Secret>
                        <ReadOnly>false</ReadOnly>
                        <InitialValue/>
                        <Constraint>.+</Constraint>
                    </Text>
                </Input>
            </Requirement>
            <Requirement>
                <Credential>
                    <Type>none</Type>
                </Credential>
                <Label>
                    <Text> Please submit credentials to continue Login ...</Text>
                    <Type>confirmation</Type>
                </Label>
                <Input/>
            </Requirement>
            <Requirement>
                <Credential>
                    <ID>saveCredentials</ID>
                    <Type>savecredentials</Type>
                </Credential>
                <Label>
                    <Text>Remember my password</Text>
                    <Type>plain</Type>
                </Label>
                <Input>
                    <CheckBox>
                        <InitialValue>false</InitialValue>
                    </CheckBox>
                </Input>
            </Requirement>
            <Requirement>
                <Credential>
                    <ID>loginBtn</ID>
                    <Type>none</Type>
                </Credential>
                <Label>
                    <Type>none</Type>
                </Label>
                <Input>
                    <Button>Log On</Button>
                </Input>
            </Requirement>
        </Requirements>
    </AuthenticationRequirements>
</AuthenticateResponse>
<!--NeedCopy-->

Referenzen

Authentifizierung für NetScaler mit AD FS 4.0 auf Server 2016, Citrix FAS und Azure MFA in Azure Cloud. (2018). Abgerufen von https://www.jgspiers.com/authentication-to-netscaler-using-ad-fs-4-0-server-2016-citrix-fas-azure-mfa-azure-cloud/

Konfigurieren Sie Azure MFA als Authentifizierungsanbieter mit AD FS. (2019). Abgerufen von https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa

Bereitstellen einer Verbundserverfarm. (2017). Abgerufen von https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/deployment/deploying-a-federation-server-farm

ADFS-Bereitstellung des Verbundauthentifizierungsdienstes. (2018). Abgerufen von https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/secure/federated-authentication-service/fas-architectures/fas-adfs.html

Anleitung zum Bereitstellen von NetScaler als Active Directory Verbunddienste-Proxy. (n.d.). Abgerufen von https://www.citrix.com/content/dam/citrix/en_us/documents/products-solutions/guide-to-deploying-netscaler-as-an-active-directory-federation-services-proxy.pdf

Funktionsweise: Azure Multi-Factor Authentication. (2018). Abgerufen von https://docs.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks

Planen einer cloudbasierten Azure Multi-Factor Authentication Bereitstellung. (2019). Abgerufen von https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-getstarted

Tijl Van den Broeck. (7. Dezember 2017). ADFS v3 unter Windows Server 2012 R2 mit NetScaler. Abgerufen von https://www.citrix.com/blogs/2015/05/29/adfs-v3-on-windows-server-2012-r2-with-netscaler/

Übergang zu Hybrid Cloud und SaaS mit Citrix Gateway. (n.d.). Abgerufen von https://www.citrix.com/products/citrix-gateway/resources/netscaler-unified-gateway.html

Benutzeranmeldung mit Azure Active Directory Pass-Through-Authentifizierung. (2018). Abgerufen von https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta

Geschrieben von Saman Salehian, Lead Networking Sales Engineer.

Citrix Gateway und Microsoft Azure Multi-Factor Authentication