Citrix Gateway und Microsoft Azure Multi-Faktor-Authentifizierung
Citrix Gateway stellt alle gehosteten SaaS-, Web-, Unternehmens- und mobilen Anwendungen für Benutzer auf jedem Gerät und in jedem Browser bereit. Es verwendet die nFactor-Authentifizierung, um Benutzer anhand von lokalen Microsoft AD zu authentifizieren, und nutzt Microsoft AD FS für die Azure Multi-Faktor-Authentifizierung (MFA).
Citrix Gateway
Citrix Gateway bietet Benutzern einen einzigen Zugriffspunkt 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 auf einer Reihe von Geräten bereitgestellt – Laptops, Desktops, Thin Clients, Tablets und Smartphones. Citrix Gateway bietet Konsolidierung, hilft, den Platzbedarf der Remote-Zugriffsinfrastruktur zu reduzieren, senkt Kosten und bietet eine einfache Verwaltung sowie eine bessere Endbenutzererfahrung. Citrix Gateway hilft der IT beim Übergang zu Hybrid-Cloud- und SaaS-Umgebungen.
- Föderation und Single Sign-On
Citrix Gateway bietet eine föderierte Identität und unterstützt SAML 2.0, OAuth und OpenID, um Single Sign-On für alle Anwendungen zu erreichen, egal ob es sich um Web-, VDI-, Unternehmens- oder SaaS-Anwendungen handelt.
- Benutzerverzeichnis lokal
Citrix Gateway bietet SSO für SaaS-Anwendungen wie Office 365 und Salesforce und hält das Benutzerverzeichnis lokal. Es kann als IdP oder Proxy für Microsoft Active Directory Federation Services (AD FS) implementiert werden.
- Multi-Faktor- (nFactor-) Authentifizierung
Citrix Gateway bietet nFactor-Authentifizierungsmechanismen und ermöglicht eine granulare Kontrolle darüber, wer auf das Netzwerk zugreift, worauf 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 granulare Zugriffssteuerung auf Geschäftsanwendungen basierend auf dem Zustand des Endbenutzergeräts, des Benutzers, des Benutzerstandorts und anderer Daten. Ein IT-Administrator kann die Richtlinien erstellen, verwalten und durchsetzen, um sicher auf Daten in einer Anwendungsumgebung zuzugreifen. Diese Richtlinien können für VDI-, Web-, Mobil-, Unternehmens- und SaaS-Anwendungen implementiert werden.
- Sichtbarkeit und Überwachung
Citrix Application Delivery Management umfasst Gateway Insight, das eine End-to-End-Sichtbarkeit der Benutzererfahrung für alle über Citrix Gateway aufgerufenen Anwendungen bietet. Es liefert Informationen für Anwendungssupport-Teams zur Fehlerbehebung bei Authentifizierungsfehlern, einschließlich EPA-Prüfungsfehlern und Single Sign-On-Fehlern.


Microsoft Azure MFA
Benutzer verbinden sich in zunehmend komplexen Szenarien mit Organisationsressourcen. Sie verbinden sich von firmeneigenen, persönlichen und öffentlichen Geräten innerhalb und außerhalb des Unternehmensnetzwerks, wobei sie Smartphones, Tablets, PCs und Laptops verwenden, oft auf mehreren Plattformen. In dieser stets verbundenen Welt mit mehreren Geräten und Plattformen 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, Passwörter für mehrere Konten wiederzuverwenden. Ausgeklügelte Phishing- und andere Social-Engineering-Angriffe können dazu führen, dass Benutzernamen und Passwörter im Darknet veröffentlicht und verkauft werden.
Die Sicherheit des zweistufigen Verifizierungsprozesses liegt in seinem geschichteten Ansatz. Das Kompromittieren mehrerer Authentifizierungsfaktoren stellt eine erhebliche Herausforderung für Angreifer dar. Selbst wenn es einem Angreifer gelingt, das Passwort des Benutzers herauszufinden, ist es nutzlos, wenn er nicht auch im Besitz der zusätzlichen Authentifizierungsmethode ist. Es funktioniert, indem es zwei oder mehr der folgenden Authentifizierungsmethoden erfordert:
- Etwas, das Sie wissen (typischerweise ein Passwort)
- Etwas, das Sie haben (ein vertrauenswürdiges Gerät, das nicht leicht dupliziert werden kann, wie ein Telefon)
- Etwas, das Sie sind (Biometrie)
Azure Multi-Factor Authentication hilft, den Zugriff auf Daten und Anwendungen zu schützen. Es bietet eine zusätzliche Sicherheitsebene durch eine zweite Form der Authentifizierung. Organisationen können bedingten Zugriff verwenden, um die Lösung an ihre spezifischen Bedürfnisse anzupassen.
Microsoft Azure MFA-Bereitstellungsmethoden
Es gibt verschiedene Methoden, um Azure MFA als zweiten Authentifizierungsfaktor zu nutzen. Solche Methoden werden im Folgenden kurz mit ihren Vor- und Nachteilen erläutert.
Azure MFA-Server
Der Microsoft Azure Multi-Factor Authentication Server war die ursprüngliche Methode und wird eingestellt. Er sollte für keine neue Implementierung in Betracht gezogen werden, da
- Microsoft in diese Methode keine weiteren Investitionen tätigen wird.
- Es gibt keine Integration mit SSPR und Azure MFA Cloud-basiert.
- Es gibt kein nahtloses Migrationstool vom MFA-Server zur Cloud-basierten MFA-Lösung.
Azure MFA Network Policy Server-Erweiterung
Die Network Policy Server (NPS)-Erweiterung für Azure MFA ist eine unterstützte Lösung, die den NPS-Adapter verwendet, um eine Verbindung mit der Cloud-basierten Azure MFA herzustellen. Sie kann als lokaler RADIUS-Server verwendet werden.
- Der NPS-Adapter (RADIUS) stellt einen Netzwerkstandort innerhalb/außerhalb der MFA-Regel oder Ein/Aus bereit.
- Er ist nicht mit Azure AD Conditional Access Policies kompatibel, ähnlich der SAML-Integrationsmethode. Conditional Access Policies bieten eine viel umfassendere und bessere Benutzererfahrung.
- Benutzer müssen vor der Verwendung des NPS-Adapters in MFA registriert sein. Im Gegensatz zur Cloud-basierten Azure MFA und Conditional Access schlägt die NPS-Erweiterung fehl, den Benutzer zu authentifizieren, wenn dieser nicht registriert ist, was zu mehr Anrufen beim Helpdesk führt.
- Wenn der NPS-Adapter MFA aufruft, wird die registrierte Standardoption des Benutzers verwendet. Es gibt keine visuelle Benachrichtigung für den Benutzer, dass MFA erforderlich ist und kommt. Es gibt keine Benutzeroberfläche für den Benutzer, um MFA-Methoden während eines geschützten Prozesses zu ändern. Wenn der Benutzer sein Standardgerät nicht dabei hat, schlägt dies fehl. Der Benutzer muss zum Self-Service-Portal zurückkehren, die Standardoption zurücksetzen und dann erneut versuchen, eine Verbindung herzustellen.
Microsoft AD FS und Azure MFA
Wenn Ihre Organisation mit Azure AD föderiert ist, aber Kennwort-Hashes nicht mit Azure AD synchronisiert werden, können Sie lokales AD für Lightweight Directory Access Protocol (LDAP) verwenden und Azure MFA als Teil der Zugriffsrichtlinien auf AD FS-Relay-Parteien aktivieren. Ab Windows Server 2016 können Sie Azure MFA nun für die primäre Authentifizierung konfigurieren.
- Der Azure MFA-Adapter ist in Windows Server 2016 integriert, und es ist keine zusätzliche Installation erforderlich.
- Der Azure MFA-Adapter integriert sich direkt in Azure AD und erfordert keinen lokalen Azure MFA-Server.
- Wenn Benutzer nicht für MFA registriert sind, werden sie beim nächsten Anmelden durch den Prozess geführt. Dies reduziert die Anzahl der Anrufe beim Helpdesk und verbessert den Prozess für die Benutzer.
- Benutzer erhalten eine visuelle Benachrichtigung, dass MFA erforderlich ist und kommt. Benutzer können die Gateway-Option während eines geschützten Prozesses in der Benutzeroberfläche ändern.
Azure AD und Azure MFA
Wenn Ihre Organisation Kennwort-Hashes mit Azure AD synchronisiert, kann Azure MFA über Conditional Access Policies genutzt werden, um Benutzer zur Zwei-Faktor-Authentifizierung aufzufordern.
- Diese Methode erfordert keine zusätzlichen lokalen Installationen.
- Wenn Benutzer nicht für MFA registriert sind, werden sie beim nächsten Anmeldevorgang durch den Prozess geführt. Dies führt zu weniger Anrufen beim Helpdesk und einem besseren Prozess für die Benutzer.
- Benutzer erhalten eine visuelle Benachrichtigung, dass MFA erforderlich ist und kommt. Benutzer können die Gateway-Option während eines gesteuerten Prozesses in der Benutzeroberfläche ändern.
Azure AD Pass-Through-Authentifizierung und Azure MFA
Die Azure AD Pass-Through-Authentifizierung (PTA) ermöglicht Benutzern die Anmeldung bei lokalen und cloudbasierten Anwendungen mit denselben Kennwörtern. Wenn sich Benutzer mit Azure AD anmelden, überprüft diese Funktion die Kennwörter der Benutzer direkt anhand des lokalen Active Directory. Azure AD PTA ist eine Alternative zur Azure AD-Kennwort-Hash-Synchronisierung, die Organisationen den gleichen Vorteil der Cloud-Authentifizierung bietet.
- Azure AD PTA erfordert die Installation eines schlanken Agents lokal.
- Azure AD PTA schützt die Benutzerkonten durch nahtlose Zusammenarbeit mit den Azure AD Conditional Access-Richtlinien, einschließlich Azure MFA.
- 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 Ihres Netzwerks her. Daher ist es nicht erforderlich, den Agenten in einem Perimeter-Netzwerk, auch bekannt als DMZ, zu installieren.
Aktuelle Situation
Eine Umgebung mit den folgenden Merkmalen erfordert die Nutzung von Azure MFA als zweiten Authentifizierungsfaktor:
- Lokales AD mit Azure AD-Synchronisierung ist konfiguriert.
- Azure AD-Kennwort-Hash-Synchronisierung ist deaktiviert.
- Zugriff auf O365-Anwendungen ist erforderlich.
- Zugriff auf lokale Citrix Virtual Apps and Desktops™ ist erforderlich.
- Der Zugriff auf Anwendungen mit moderner Authentifizierungsmethode (SAML, OAuth) ist erforderlich.
- Der Zugriff auf Anwendungen mit Legacy-Authentifizierungsmethode ist erforderlich.
Designpunkte
Dies sind die Designpunkte für die vorgeschlagene Lösung:
- Sicherer Zugriff auf gehostete, SaaS-, Unternehmens- und Webanwendungen in einem einzigen Portal ist erforderlich.
- Benutzer müssen ihre Anmeldeinformationen während des Authentifizierungsprozesses nur einmal eingeben.
- Single Sign-On muss für alle gehosteten, SaaS-, Unternehmens- und Webanwendungen bereitgestellt werden.
Vorgeschlagene Lösung
Übersicht
Die vorgeschlagene Lösung basiert auf den folgenden Komponenten:
- On-Premises Citrix Gateway
- On-Premises Microsoft AD
- On-Premises Microsoft AD FS
- On-Premises Citrix ADC als AD FS Proxy
- Microsoft Azure MFA
Citrix Gateway nutzt die Authentifizierungs-, Autorisierungs- und Auditierungsfunktion (Citrix ADC AAA) und nFactor-Authentifizierungsmechanismen, um Benutzer mit einer LDAP-Richtlinie zu authentifizieren und die Zugriffsrichtlinie auf der AD FS Relying Party zu nutzen, um den Azure MFA-Validierungsprozess auszulösen. Nachdem Azure MFA den Benutzer validiert hat, generiert AD FS eine SAML-Assertion (SAML-Antwort) und leitet den Benutzer zurück zu Citrix Gateway. Zu diesem Zeitpunkt ist der Benutzer authentifiziert, und Citrix Gateway präsentiert alle Anwendungen, für die der Benutzer autorisiert ist.
Die Lösung erfordert zwei öffentliche DNS-Einträge und zwei öffentliche IP-Adressen:
| Beschreibung | Wert |
|---|---|
| Citrix Gateway FQDN | access.ctxdemos.com |
| Citrix Authentifizierungs-, Autorisierungs- und Auditierungs-FQDN | aaa.ctxdemos.com |
Die Lösung verwendet ein öffentliches SSL-Zertifikat:
| Beschreibung | Wert |
|---|---|
| Common Name | access.ctxdemos.com |
| Subject Alternative Name | sts.ctxdemos.com |
| Alternativer Antragstellername | aaa.ctxdemos.com |
Die Lösung verwendet auch ein Wildcard-SSL-Zertifikat, das von internen Microsoft-Zertifizierungsstellendiensten ausgestellt wurde:
| Beschreibung | Wert |
|---|---|
| Allgemeiner Name | *.ctxdemos.com |
Authentifizierungsablauf
Sequenzdiagramm
Das folgende Sequenzdiagramm zeigt den Authentifizierungsablauf für die Lösung:

Authentifizierungsschritte
Die Authentifizierungsschritte sind:
- Der Benutzer navigiert zu https://access.ctxdemos.com.
- Citrix Gateway leitet den Benutzer zum ersten Citrix ADC AAA VIP (nicht adressierbar) um.
- Der erste Citrix ADC AAA VIP verwendet eine schemafreie Anmeldung, die mit Single Sign-On konfiguriert ist. Anschließend beginnt er mit der Verarbeitung der erweiterten Authentifizierungsrichtlinien.
- Die erste Authentifizierungsrichtlinie ist SAML SP zu einem nicht adressierbaren LB VIP, um Authentifizierungs-Cookies zu generieren.
- Der Helper LB VIP ist so konfiguriert, dass er den zweiten Citrix ADC AAA VIP (adressierbar) für die Authentifizierung verwendet. Daher leitet er den Benutzer zum zweiten Authentifizierungs-, Autorisierungs- und Audit-VIP um.
- Der zweite Citrix ADC AAA VIP verwendet das
Username OnlyAnmeldeschema, das den Benutzer zur Eingabe des Benutzernamens auffordert. Anschließend beginnt er mit der Verarbeitung der erweiterten Authentifizierungsrichtlinien. - 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 Validierungsergebnis erfolgreich ist, beginnt sie mit der Verarbeitung des nächsten Authentifizierungsfaktors, der LDAP-Richtlinie.
- Die LDAP-Richtlinie verwendet das
UsernameAndPasswordAnmeldeschema und ein vorausgefülltes Benutzernamenfeld und fordert den Benutzer zur Eingabe des AD-Passworts auf. - Wenn die Authentifizierung auf dem zweiten Citrix ADC AAA VIP erfolgreich abgeschlossen ist, kehrt er zum Helper LB VIP zurück, der eine SAML-Antwort für den ersten Authentifizierungs-, Autorisierungs- und Audit-VIP generiert.
- Der erste Citrix ADC AAA VIP beginnt mit der Verarbeitung des nächsten Faktors, einer Gruppenextraktion, um sicherzustellen, dass die Benutzergruppen aus dem AD extrahiert und in der Authentifizierungs-, Autorisierungs- und Audit-Variable gespeichert werden, um später im Prozess verwendet zu werden.
- Der erste Citrix ADC AAA VIP beginnt mit der Verarbeitung des nächsten Faktors, einem SAML SP zu AD FS Proxy VIP auf Citrix ADC.
Hinweis:
Citrix ADC ist mit der AD FS-Farm föderiert. Die detaillierten Schritte werden in späteren Abschnitten erläutert.
- Der AD FS Proxy VIP überprüft, ob die Authentifizierungs-Cookies (NSC_TMAA und NSC_TMAS) gesetzt sind. Anschließend sendet er die SAML-Anfrage an einen Backend-AD FS-Server (die Backend-AD FS-Server sollten auf einem internen Citrix ADC für Hochverfügbarkeit und Dienstresilienz lastverteilt sein).
- Der AD FS-Server verarbeitet die SAML-Anfrage. Da die Zugriffsrichtlinie für die vertrauende Seite auf „Alle Benutzer zulassen und MFA für die Authentifizierung erforderlich“ eingestellt ist, wird der Azure MFA-Authentifizierungsprozess ausgelöst.
- Azure MFA verarbeitet den Benutzernamen. Wenn dieser bereits registriert ist, fordert es den Benutzer mit der konfigurierten Methode heraus. Andernfalls fordert es den Benutzer auf, sich zu registrieren und die primären und sekundären Authentifizierungsmethoden festzulegen.
- Sobald der Azure MFA-Authentifizierungsprozess erfolgreich abgeschlossen ist, generiert AD FS eine SAML-Antwort für Citrix Gateway (erster Citrix ADC AAA VIP).
- Der erste Citrix ADC AAA VIP empfängt eine SAML-Antwort und bestätigt, dass der Authentifizierungsprozess für den Benutzer abgeschlossen ist.
- Citrix Gateway sendet Authentifizierungsinformationen an Citrix StoreFront™, das alle Anwendungen und Desktops auflistet, die der Benutzer verwenden darf. Außerdem verarbeitet es die Gruppenmitgliedschaft des Benutzers, um veröffentlichte Lesezeichen auf Citrix Gateway anzuzeigen.
Authentifizierungsbildschirme
Die meisten der oben genannten Schritte sind für Benutzer nahtlos, da sie intern zwischen verschiedenen VIPs auf dem Citrix ADC ablaufen. Die Benutzererfahrung wird unten gezeigt:

Implementierung
Microsoft AD FS
Zertifikatsanforderungen
Föderationsserver benötigen die Zertifikate in der folgenden Tabelle:
| Zertifikatstyp | Beschreibung | Was vor der Bereitstellung zu beachten ist |
|---|---|---|
| Secure Sockets Layer (SSL)-Zertifikat | Dies ist ein Standard-Secure Sockets Layer (SSL)-Zertifikat, das zur Sicherung der Kommunikation zwischen Föderationsservern und Clients verwendet wird. | Dieses Zertifikat muss an die Standard-Website in den Internet Information Services (IIS) für einen Föderationsserver oder einen Föderationsserver-Proxy gebunden sein. Für einen Föderationsserver-Proxy muss die Bindung in IIS konfiguriert werden, bevor der Konfigurationsassistent für den Föderationsserver-Proxy erfolgreich ausgeführt wird. Empfehlung: Da dieses Zertifikat von AD FS-Clients vertraut werden muss, verwenden Sie ein Serverauthentifizierungszertifikat, das von einer öffentlichen (Drittanbieter-)Zertifizierungsstelle (CA) ausgestellt wurde. Zum Beispiel Verisign. Tipp: Der Antragstellername dieses Zertifikats wird verwendet, um den Föderationsdienstnamen für jede von Ihnen bereitgestellte AD FS-Instanz darzustellen. Aus diesem Grund sollten Sie in Betracht ziehen, bei neuen von einer CA ausgestellten Zertifikaten einen Antragstellernamen zu wählen, der den Namen Ihres Unternehmens oder Ihrer Organisation gegenüber Partnern am besten repräsentiert. |
| Dienstkommunikationszertifikat | Dieses Zertifikat ermöglicht die WCF-Nachrichtensicherheit zur Absicherung der Kommunikation zwischen Verbundservern. | Standardmäßig wird das SSL-Zertifikat als Dienstkommunikationszertifikat verwendet. Dies kann über die AD FS-Verwaltungskonsole geändert werden. |
| Token-Signaturzertifikat | Dies ist ein Standard-X509-Zertifikat, das zur sicheren Signierung aller Token verwendet wird, die der Verbundserver ausstellt. | Das Token-Signaturzertifikat muss einen privaten Schlüssel enthalten und sollte in der Federation Service zu einer vertrauenswürdigen Stammzertifizierungsstelle verkettet sein. Standardmäßig erstellt AD FS ein selbstsigniertes Zertifikat. Sie können dies jedoch später mithilfe des AD FS-Verwaltungs-Snap-Ins in ein von einer Zertifizierungsstelle ausgestelltes Zertifikat ändern, je nach den Anforderungen Ihrer Organisation. |
| Token-Entschlüsselungszertifikat | Dies ist ein Standard-SSL-Zertifikat, das zum Entschlüsseln eingehender Token verwendet wird, die von einem Partner-Verbundserver verschlüsselt wurden. Es wird auch in den Verbundmetadaten veröffentlicht. | Standardmäßig erstellt AD FS ein selbstsigniertes Zertifikat. Sie können dies jedoch später mithilfe des AD FS-Verwaltungs-Snap-Ins in ein von einer Zertifizierungsstelle ausgestelltes Zertifikat ändern, je nach den Anforderungen Ihrer Organisation. |
Konfiguration der Demo-Umgebung
| Zertifikatstyp | Konfiguration der Demo-Umgebung |
|---|---|
| Secure Sockets Layer (SSL)-Zertifikat | Internes Zertifikat, ausgestellt von einer internen ausstellenden Zertifizierungsstelle auf dem AD FS-Server. Öffentlich vertrauenswürdiges Zertifikat auf Citrix ADC. |
| Dienstkommunikationszertifikat | Internes Zertifikat, ausgestellt von der internen ausstellenden Zertifizierungsstelle von AHS. |
| Tokensignaturzertifikat | Automatisch vom AD FS-Dienst generiert. |
| Tokenentschlüsselungszertifikat | Automatisch vom AD FS-Dienst generiert. |
In der Demo-Umgebung wird ein Wildcard-Zertifikat auf dem Server registriert und installiert.

Anforderungen an Dienstkonten
Sie können entweder ein Dienstkonto erstellen oder Group Managed Service Accounts (gMSA) nutzen. Um gMSA zu verwenden, müssen Sie einen Schlüsselverteilungsdienst-Stammschlüssel (Key Distribution Service Root Key) erstellen. Starten Sie dazu PowerShell und führen Sie den folgenden Befehl aus:
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
<!--NeedCopy-->
Dieser Befehl erstellt einen Schlüsselverteilungsdienst-Stammschlüssel (Key Distribution Service Root Key), der in Active Directory gespeichert wird, und ermöglicht Ihnen die Erstellung eines Group Managed Service Account (gMSA) als das AD FS-Dienstkonto, das Sie später erstellen. Führen Sie diesen Befehl mit Domänenadministratorrechten aus.

Anforderungen an DNS-Einträge
Sie benötigen einen DNS A-Eintrag für Ihren AD FS-Verbunddienstnamen intern und extern. In der Demo-Umgebung zeigt der interne DNS-Eintrag auf die IP des AD FS-Servers und der externe DNS-Eintrag auf die öffentliche IP des Citrix Gateways.
| Eintragsname | Geltungsbereich | Typ | IP-Adresse |
|---|---|---|---|
| sts.ctxdemox.com | Intern | A | 22.22.22.6 |
| sts.ctxdemox.com | Extern | A | 40.85.225.175 |
AD FS-Rolle hinzufügen und AD FS-Farm konfigurieren
AD FS-Rolle hinzufügen
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-->

AD FS-Farm konfigurieren
Sie können nun mit der AD FS-Konfiguration nach der Bereitstellung vom Server-Manager aus beginnen. Klicken Sie auf Configure the federation service on this server.

Wählen Sie auf der Seite Welcome die Option Create the first federation server in a federation server farm aus, und klicken Sie dann auf Next.

Stellen Sie auf der Seite Connect to Active Directory Domain Services sicher, dass das Domänenadministratorkonto angegeben ist, und klicken Sie dann auf Next.

Führen Sie auf der Seite Specify Service Properties die folgenden Schritte aus, und klicken Sie dann auf Next:
- Wählen Sie das Zertifikat aus, das in den vorherigen Schritten auf dem Server installiert wurde.
- Der Name des Verbunddienstes wird automatisch basierend auf dem Antragstellernamen des Zertifikats ausgefüllt.
- Geben Sie den Anzeigenamen für den Verbunddienst ein. Zum Beispiel: CTXDEMOS STS.

Wählen Sie auf der Seite Specify Service Account die Option Create a Group Managed Service Account aus und geben Sie einen eindeutigen Namen für dieses Konto ein. Group Managed Service Accounts werden ab Windows Server 2012 unterstützt und verfügen über strenge, komplexe Passwörter, die alle 30 Tage automatisch geändert werden. Klicken Sie auf Next.

Wählen Sie auf der Seite Specify Configuration Database den Speicherort einer SQL Server-Datenbank aus. Klicken Sie auf Next.

Auf der Seite Optionen überprüfen überprüfen Sie Ihre Konfigurationsauswahl und klicken Sie dann auf Weiter.
Optionen überprüfen(/de-de/advanced-concepts/media/adfs-post-deployment-configuration-review-options.png)
Auf der Seite Voraussetzungsprüfungen vergewissern Sie sich, dass alle Voraussetzungsprüfungen erfolgreich abgeschlossen wurden, und klicken Sie dann auf Konfigurieren.
Voraussetzungsprüfungen(/de-de/advanced-concepts/media/adfs-post-deployment-configuration-pre-requisite-checks.png)
Auf der Seite Ergebnisse stellen Sie sicher, dass die Installation erfolgreich war. Klicken Sie auf Schließen, um den Assistenten zu beenden.
Konfigurationsergebnisse nach der Bereitstellung(/de-de/advanced-concepts/media/adfs-post-deployment-configuration-results.png)
Hinweis:
Um die folgenden Schritte auszuführen, benötigen Sie Ihre Azure Tenant ID.
Sie können die Azure Tenant ID abrufen, indem Sie die Schritte im Microsoft-Dokumentationsartikel Get AzureID Tenant Detail befolgen.
Die Microsoft-Dokumentation enthält auch Informationen zur Azure MFA Client GUID in Configure AD FS 2016 and Azure MFA.
AD FS-Farm konfigurieren – 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-->
AD FS mit Azure MFA konfigurieren
AD FS-Server konfigurieren
Auf jedem Ihrer AD FS-Server starten Sie PowerShell und führen 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-->
AD FS-Farm konfigurieren
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. Anschließend sehen Sie, dass Azure MFA als primäre und Multifaktor-Authentifizierungsmethode für die Intranet- und Extranet-Nutzung verfügbar ist.


AD FS mit Citrix ADC konfigurieren
Sie müssen eine Verbundvertrauensstellung zwischen AD FS und Citrix ADC erstellen. Navigieren Sie in der AD FS-Verwaltungskonsole zu Vertrauensstellungen der vertrauenden Seite und wählen Sie Vertrauensstellung der vertrauenden Seite hinzufügen.

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

Geben Sie einen aussagekräftigen Anzeigenamen und optionale Notizen ein. Klicken Sie auf Weiter.

Klicken Sie auf Weiter.

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.
Eine URL konfigurieren(/de-de/advanced-concepts/media/adfs-add-relying-party-trust-configure-url.png)
Geben Sie eine eindeutige Bezeichnerzeichenfolge für die Vertrauensstellung der vertrauenden Seite ein. In der Demo-Umgebung ist dies https://access.ctxdemos.com. Dieser Bezeichner wird als Aussteller-URL im Citrix ADC SAML-Profil verwendet. Klicken Sie auf Weiter.
Einen Bezeichner konfigurieren(/de-de/advanced-concepts/media/adfs-add-relying-party-trust-configure-identifiers.png)
Wählen Sie auf der Seite Zugriffssteuerungsrichtlinie auswählen die Option Jedem den Zugriff erlauben und MFA anfordern aus. Klicken Sie auf Weiter.
Zugriffssteuerungsrichtlinie(/de-de/advanced-concepts/media/adfs-add-relying-party-trust-choose-access-control-policy.png)
Klicken Sie auf Weiter.
Vertrauensstellung hinzufügen(/de-de/advanced-concepts/media/adfs-add-relying-party-trust-ready-to-add-trust.png)
Wählen Sie auf der Seite Fertig stellen die Option Anspruchsausstellungsrichtlinie für diese Anwendung konfigurieren aus. Klicken Sie auf Schließen.
Fertig stellen(/de-de/advanced-concepts/media/adfs-add-relying-party-trust-finish.png)
Klicken Sie auf der Seite Ausstellungstransformationsregeln auf Regel hinzufügen.
Eine Regel hinzufügen(/de-de/advanced-concepts/media/adfs-issuance-transform-rules-start.png)
Klicken Sie auf Weiter.
Eine Vorlage auswählen(/de-de/advanced-concepts/media/adfs-issuance-transform-rules-select-rule-template.png)
Geben Sie einen aussagekräftigen 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.
Eine Regel konfigurieren(/de-de/advanced-concepts/media/adfs-issuance-transform-rules-configure-rule.png)
Erstellen Sie eine neue Regel und verwenden Sie Ansprüche mit einer benutzerdefinierten Regel senden als Anspruchsregelvorlage. Geben Sie einen aussagekräftigen Namen für Anspruchsregelname 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-->

Wenn die Anspruchsausstellungsrichtlinien erstellt wurden, klicken Sie auf OK.
Klicken Sie mit der rechten Maustaste auf Vertrauensstellung der vertrauenden Seite > 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 aus der Liste Endpunkttyp die Option SAML-Abmeldung aus. Wählen Sie für Bindung die Option POST aus, und geben Sie für Vertrauenswürdige URL https://sts.ctxdemos.com/adfs/ls/?wa=wsignout1.0 ein. Dies dient als Abmelde-URL beim Abmelden von Citrix ADC. Klicken Sie auf OK.

Klicken Sie mit der rechten Maustaste auf Vertrauensstellung der vertrauenden Seite > 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-Anfrage von Citrix ADC zu entschlüsseln. Wiederholen Sie dies 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 IdP-initiierte Anmeldeseite von AD FS 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:
- https://sts.ctxdemos.com/FederationMetadata/2007-06/FederationMetadata.xml
- https://sts.ctxdemos.com/adfs/fs/federationserverservice.asmx
- https://sts.ctxdemos.com/adfs/ls/idpinitatedsignon.aspx
Citrix ADC und Citrix Gateway
Citrix Gateway konfigurieren
Sie können Citrix Gateway über den Assistenten konfigurieren. Melden Sie sich bei der Citrix ADC Management-GUI an, navigieren Sie zu Unified Gateway, und klicken Sie auf Neues Gateway erstellen. Klicken Sie dann auf Weiter.

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

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

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

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

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

Citrix StoreFront in Citrix Gateway integrieren
Wählen Sie auf der Seite „Anwendung“ XenApp & XenDesktop® aus und wählen Sie aus der Liste Integrationspunkt auswählen die Option StoreFront. Klicken Sie auf Weiter.

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

Klicken Sie auf Fertig und dann auf Weiter.

Citrix Gateway konfigurieren und in StoreFront integrieren – 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-->
Ersten Authentifizierungsserver konfigurieren
# 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-->
Zweiten Authentifizierungsserver konfigurieren
# 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-->
Citrix ADC als AD FS WAP konfigurieren
Führen Sie die folgenden Befehle in der 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-->
Einen anfänglichen Authentifizierungsfluss konfigurieren
# 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-->
Chiffregruppen
# 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-->
XML-Datei für Anmeldeschema
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 bei NetScaler mithilfe von AD FS 4.0 auf Server 2016, Citrix FAS und Azure MFA in der 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/
Konfiguration von Azure MFA als Authentifizierungsanbieter mit AD FS. (2019). Abgerufen von https://docs.microsoft.com/de-de/windows-server/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa
Bereitstellung einer Federation Serverfarm. (2017). Abgerufen von https://docs.microsoft.com/de-de/windows-server/identity/ad-fs/deployment/deploying-a-federation-server-farm
Bereitstellung des Verbundauthentifizierungsdienstes ADFS. (2018). Abgerufen von https://docs.citrix.com/de-de/citrix-virtual-apps-desktops/secure/federated-authentication-service/fas-architectures/fas-adfs.html
Leitfaden zur Bereitstellung von NetScaler als Active Directory Federation Services Proxy. (o.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
So funktioniert’s: Azure Multi-Factor Authentication. (2018). Abgerufen von https://docs.microsoft.com/de-de/azure/active-directory/authentication/concept-mfa-howitworks
Planung einer Cloud-basierten Azure Multi-Factor Authentication-Bereitstellung. (2019). Abgerufen von https://docs.microsoft.com/de-de/azure/active-directory/authentication/howto-mfa-getstarted
Tijl Van den Broeck. (7. Dez. 2017). ADFS v3 auf 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. (o.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/de-de/azure/active-directory/hybrid/how-to-connect-pta
Verfasst von Saman Salehian, Leitender Netzwerk-Vertriebsingenieur.