Citrix Gateway et l’authentification multifacteur Microsoft Azure
Citrix Gateway présente toutes les applications hébergées, SaaS, web, d’entreprise et mobiles aux utilisateurs sur n’importe quel appareil et n’importe quel navigateur. Il utilise l’authentification nFactor pour authentifier les utilisateurs par rapport à Microsoft AD sur site et s’appuie sur Microsoft AD FS pour l’authentification multifacteur Azure (MFA).
Citrix Gateway
Citrix Gateway offre aux utilisateurs un point d’accès unique et une authentification unique (SSO) aux applications métier et aux données déployées dans un centre de données et dans le cloud. Il est fourni en tant que SaaS sur une gamme d’appareils : ordinateurs portables, ordinateurs de bureau, clients légers, tablettes et smartphones. Citrix Gateway assure la consolidation, contribue à réduire l’empreinte de l’infrastructure d’accès à distance, réduit les coûts et offre une facilité de gestion ainsi qu’une meilleure expérience utilisateur. Citrix Gateway aide à la transition de l’informatique vers les environnements de cloud hybride et SaaS.
- Fédération et authentification unique
Citrix Gateway fournit une identité fédérée et prend en charge SAML 2.0, OAuth et OpenID pour réaliser l’authentification unique sur toutes les applications, qu’il s’agisse d’applications web, VDI, d’entreprise ou SaaS.
- Annuaire d’utilisateurs sur site
Citrix Gateway fournit l’authentification unique (SSO) aux applications SaaS telles qu’Office 365 et Salesforce, et il conserve l’annuaire d’utilisateurs sur site. Il peut être implémenté en tant qu’IdP ou proxy pour Microsoft Active Directory Federation Services (AD FS).
- Authentification multifacteur (nFactor)
Citrix Gateway fournit des mécanismes d’authentification nFactor et permet un contrôle granulaire sur qui accède au réseau, à quoi il accède, et comment et quand il y accède. Il prend en charge tous les mécanismes d’authentification tels que RADIUS, TACACS, NTLM, Diameter, SAML 2.0, OAuth 2.0 et OpenID 2.0.
- Stratégies de contrôle d’accès contextuel
Citrix Gateway permet un contrôle d’accès granulaire aux applications métier basé sur l’état de l’appareil de l’utilisateur final, l’utilisateur, l’emplacement de l’utilisateur et d’autres données. Un administrateur informatique peut créer, gérer et appliquer les stratégies pour accéder aux données en toute sécurité dans un environnement d’application. Ces stratégies peuvent être implémentées pour les applications VDI, web, mobiles, d’entreprise et SaaS.
- Visibilité et surveillance
Citrix Application Delivery Management inclut Gateway Insight, qui offre une visibilité de l’expérience utilisateur de bout en bout pour toutes les applications accessibles via Citrix Gateway. Il fournit des informations aux équipes de support applicatif pour résoudre les problèmes liés aux échecs d’authentification, y compris les échecs de vérification EPA et les échecs d’authentification unique.


Microsoft Azure MFA
Les utilisateurs se connectent aux ressources organisationnelles dans des scénarios de plus en plus complexes. Ils se connectent depuis des appareils appartenant à l’organisation, personnels et publics, sur et hors du réseau d’entreprise, en utilisant des smartphones, des tablettes, des PC et des ordinateurs portables, souvent sur plusieurs plateformes. Dans ce monde toujours connecté, multi-appareils et multi-plateformes, la sécurité des comptes utilisateurs est plus importante que jamais. Les mots de passe, quelle que soit leur complexité, utilisés sur différents appareils, réseaux et plateformes, ne suffisent plus à garantir la sécurité du compte utilisateur, surtout lorsque les utilisateurs ont tendance à réutiliser les mots de passe sur plusieurs comptes. Des attaques de phishing sophistiquées et d’autres attaques d’ingénierie sociale peuvent entraîner la publication et la vente de noms d’utilisateur et de mots de passe sur le dark web.
La sécurité du processus de vérification en deux étapes réside dans son approche multicouche. Compromettre plusieurs facteurs d’authentification représente un défi important pour les attaquants. Même si un attaquant parvient à connaître le mot de passe de l’utilisateur, il est inutile sans avoir également la possession de la méthode d’authentification supplémentaire. Cela fonctionne en exigeant deux ou plusieurs des méthodes d’authentification suivantes :
- Quelque chose que vous savez (généralement un mot de passe)
- Quelque chose que vous possédez (un appareil de confiance qui n’est pas facilement duplicable, comme un téléphone)
- Quelque chose que vous êtes (biométrie)
L’authentification multifacteur Azure aide à protéger l’accès aux données et aux applications. Elle offre une couche de sécurité supplémentaire en utilisant une deuxième forme d’authentification. Les organisations peuvent utiliser l’accès conditionnel pour adapter la solution à leurs besoins spécifiques.
Méthodes de déploiement de Microsoft Azure MFA
Il existe différentes méthodes pour tirer parti de l’authentification multifacteur Azure comme deuxième facteur d’authentification. Ces méthodes sont brièvement expliquées ci-dessous avec leurs avantages et inconvénients.
Serveur Azure MFA
Le serveur d’authentification multifacteur Microsoft Azure était la méthode originale et il va être déprécié. Il ne doit pas être envisagé pour toute nouvelle implémentation car
- Microsoft n’investira plus dans cette méthode à l’avenir.
- Il n’y a pas d’intégration avec SSPR et Azure MFA basé sur le cloud.
- Il n’existe pas d’outil de migration transparente du serveur MFA vers la solution MFA basée sur le cloud.
Extension Network Policy Server d’Azure MFA
L’extension Network Policy Server (NPS) pour Azure MFA est une solution prise en charge qui utilise l’adaptateur NPS pour se connecter à Azure MFA basé sur le cloud. Il peut être utilisé comme serveur RADIUS sur site.
- L’adaptateur NPS (RADIUS) fournira un emplacement réseau à l’intérieur/à l’extérieur de la règle MFA ou activé/désactivé.
- Il n’est pas compatible avec les stratégies d’accès conditionnel d’Azure AD, similaire à la méthode d’intégration SAML. Les stratégies d’accès conditionnel offrent des expériences utilisateur beaucoup plus riches et meilleures.
- Les utilisateurs doivent être enregistrés dans MFA avant d’utiliser l’adaptateur NPS. Contrairement à Azure MFA basé sur le cloud et à l’accès conditionnel, si l’utilisateur n’est pas enregistré, l’extension NPS ne parvient pas à authentifier l’utilisateur, ce qui génère plus d’appels au service d’assistance.
- Lorsque l’adaptateur NPS invoque MFA, il utilise l’option par défaut enregistrée par l’utilisateur. Il n’y a pas de notification visuelle pour l’utilisateur indiquant que MFA est requis et arrive. Il n’y a pas d’interface utilisateur permettant à l’utilisateur de modifier les méthodes MFA pendant un processus contrôlé. Si l’utilisateur n’a pas son appareil par défaut avec lui, cela échouera. L’utilisateur doit retourner au portail en libre-service et réinitialiser l’option par défaut, puis essayer de se connecter à nouveau.
Microsoft AD FS et Azure MFA
Si votre organisation est fédérée avec Azure AD, mais que les hachages de mots de passe ne sont pas synchronisés avec Azure AD, vous pouvez utiliser un AD sur site pour le protocole LDAP (Lightweight Directory Access Protocol) et activer Azure MFA dans le cadre des stratégies d’accès sur les parties de confiance AD FS. À partir de Windows Server 2016, vous pouvez désormais configurer Azure MFA pour l’authentification principale.
- L’adaptateur Azure MFA est intégré à Windows Server 2016, et aucune installation supplémentaire n’est nécessaire.
- L’adaptateur Azure MFA s’intègre directement à Azure AD et ne nécessite pas de serveur Azure MFA sur site.
- Si les utilisateurs ne sont pas enregistrés pour MFA, ils sont guidés tout au long du processus lors de la prochaine connexion. Cela garantit moins d’appels au service d’assistance et un meilleur processus pour les utilisateurs.
- Les utilisateurs reçoivent une notification visuelle indiquant que MFA est requis et arrive. Les utilisateurs peuvent modifier l’option de passerelle pendant un processus contrôlé dans l’interface utilisateur.
Azure AD et Azure MFA
Si votre organisation synchronise les hachages de mots de passe dans Azure AD, Azure MFA peut être utilisé via des stratégies d’accès conditionnel pour demander aux utilisateurs une authentification à deux facteurs.
- Cette méthode ne nécessite aucune installation supplémentaire sur site.
- Si les utilisateurs ne sont pas enregistrés pour l’authentification multifacteur (MFA), ils sont guidés tout au long du processus lors de la prochaine connexion. Cela réduit le nombre d’appels au service d’assistance et améliore le processus pour les utilisateurs.
- Les utilisateurs reçoivent une notification visuelle indiquant que l’authentification multifacteur (MFA) est requise et sera bientôt mise en œuvre. Les utilisateurs peuvent modifier l’option de passerelle au cours d’un processus contrôlé dans l’interface utilisateur.
Authentification directe Azure AD et Azure MFA
L’authentification directe Azure AD (PTA) permet aux utilisateurs de se connecter aux applications locales et basées sur le cloud en utilisant les mêmes mots de passe. Lorsque les utilisateurs se connectent à l’aide d’Azure AD, cette fonctionnalité valide les mots de passe des utilisateurs directement par rapport à l’Active Directory local. Azure AD PTA est une alternative à la synchronisation de hachage de mot de passe Azure AD, qui offre le même avantage d’authentification cloud aux organisations.
- Azure AD PTA nécessite l’installation d’un agent léger sur site.
- Azure AD PTA protège les comptes d’utilisateur en fonctionnant de manière transparente avec les stratégies d’accès conditionnel Azure AD, y compris Azure MFA.
- Les utilisateurs peuvent effectuer des tâches de gestion de mot de passe en libre-service dans le cloud.
- Les mots de passe locaux ne sont jamais stockés dans le cloud, sous quelque forme que ce soit.
- L’agent n’établit que des connexions sortantes depuis votre réseau. Par conséquent, il n’est pas nécessaire d’installer l’agent dans un réseau périmétrique, également appelé DMZ.
Situation actuelle
Un environnement présentant les caractéristiques suivantes nécessite l’utilisation d’Azure MFA comme deuxième facteur d’authentification :
- Un AD local avec synchronisation Azure AD est configuré.
- La synchronisation de hachage de mot de passe Azure AD est désactivée.
- L’accès aux applications O365 est requis.
- L’accès à Citrix Virtual Apps and Desktops™ sur site est requis.
- L’accès aux applications avec une méthode d’authentification moderne (SAML, OAuth) est requis.
- L’accès aux applications avec une méthode d’authentification héritée est requis.
Points de conception
Voici les points de conception pour la solution proposée :
- L’accès sécurisé aux applications hébergées, SaaS, d’entreprise et web dans un portail unique est requis.
- Les utilisateurs ne doivent être invités à saisir leurs informations d’identification qu’une seule fois pendant le processus d’authentification.
- L’authentification unique doit être fournie pour toutes les applications hébergées, SaaS, d’entreprise et web.
Solution proposée
Vue d’ensemble
La solution proposée est basée sur les composants suivants :
- Citrix Gateway sur site
- Microsoft AD sur site
- Microsoft AD FS sur site
- Citrix ADC sur site en tant que proxy AD FS
- Microsoft Azure MFA
Citrix Gateway exploite la fonctionnalité d’authentification, d’autorisation et d’audit (Citrix ADC AAA) et les mécanismes d’authentification nFactor pour authentifier l’utilisateur avec une politique LDAP et exploiter la politique d’accès sur la partie de confiance AD FS pour déclencher le processus de validation Azure MFA. Une fois qu’Azure MFA a validé l’utilisateur, AD FS génère une assertion SAML (réponse SAML) et redirige l’utilisateur vers Citrix Gateway. À ce stade, l’utilisateur est authentifié et Citrix Gateway présente toutes les applications que l’utilisateur est autorisé à utiliser.
La solution nécessite deux enregistrements DNS publics et deux adresses IP publiques :
| Description | Valeur |
|---|---|
| FQDN de Citrix Gateway | access.ctxdemos.com |
| FQDN d’authentification, d’autorisation et d’audit Citrix | aaa.ctxdemos.com |
La solution utilise un certificat SSL public :
| Description | Valeur |
|---|---|
| Nom commun | access.ctxdemos.com |
| Nom alternatif du sujet | sts.ctxdemos.com |
| Nom alternatif du sujet | aaa.ctxdemos.com |
La solution utilise également un certificat SSL générique émis par les services internes de l’autorité de certification Microsoft :
| Description | Valeur |
|---|---|
| Nom commun | *.ctxdemos.com |
Flux d’authentification
Diagramme de séquence
Le diagramme de séquence suivant illustre le flux d’authentification pour la solution :

Étapes d’authentification
Les étapes d’authentification sont :
- L’utilisateur navigue vers https://access.ctxdemos.com.
- Citrix Gateway redirige l’utilisateur vers le premier VIP AAA de Citrix ADC (non adressable).
- Le premier VIP AAA Citrix ADC utilise une connexion sans schéma, configurée avec une authentification unique. Il commence ensuite à traiter les stratégies d’authentification avancées.
- La première stratégie d’authentification est SAML SP vers un VIP LB non adressable pour générer des cookies d’authentification.
- Le VIP LB d’assistance est configuré pour utiliser le deuxième VIP AAA Citrix ADC (adressable) pour l’authentification. Il redirige donc l’utilisateur vers le deuxième VIP d’authentification, d’autorisation et d’audit.
- Le deuxième VIP AAA Citrix ADC utilise le schéma de connexion
Username Only, qui invite l’utilisateur à saisir son nom d’utilisateur. Il commence ensuite à traiter les stratégies d’authentification avancées. - La première stratégie d’authentification est une extraction de groupe, qui interroge le nom d’utilisateur dans un AD sur site et valide si l’utilisateur appartient au groupe de sécurité AzureMFACAUsers. Une fois le résultat de la validation réussi, il commence à traiter le facteur d’authentification suivant, qui est la stratégie LDAP.
- La stratégie LDAP utilise le schéma de connexion
UsernameAndPasswordet un champ de nom d’utilisateur pré-rempli, et invite l’utilisateur à saisir le mot de passe AD. - Lorsque l’authentification sur le deuxième VIP AAA Citrix ADC est terminée avec succès, il retourne au VIP LB d’assistance qui génère une réponse SAML pour le premier VIP d’authentification, d’autorisation et d’audit.
- Le premier VIP AAA Citrix ADC commence à traiter le facteur suivant, qui est une extraction de groupe pour s’assurer que les groupes de l’utilisateur sont extraits d’AD et stockés dans la variable d’authentification, d’autorisation et d’audit pour être utilisés ultérieurement dans le processus.
- Le premier VIP AAA Citrix ADC commence à traiter le facteur suivant, qui est un SAML SP vers le VIP proxy AD FS sur Citrix ADC.
Remarque :
Citrix ADC est fédéré avec la ferme AD FS. Les étapes détaillées sont expliquées dans les sections ultérieures.
- Le VIP proxy AD FS valide que les cookies d’authentification (NSC_TMAA et NSC_TMAS) sont définis. Il envoie ensuite la requête SAML à un serveur AD FS principal (les serveurs AD FS principaux doivent être équilibrés en charge sur un Citrix ADC interne pour une haute disponibilité et une résilience du service).
- Le serveur AD FS traite la requête SAML. Étant donné que la stratégie d’accès sur la partie de confiance est définie sur « Autoriser tous les utilisateurs et exiger l’authentification multifacteur », cela déclenche le processus d’authentification Azure MFA.
- Azure MFA traite le nom d’utilisateur. S’il est déjà enregistré, il demande à l’utilisateur de s’authentifier avec la méthode configurée. Sinon, il invite l’utilisateur à s’enregistrer et à définir les méthodes d’authentification primaire et secondaire.
- Une fois le processus d’authentification Azure MFA terminé avec succès, AD FS génère une réponse SAML pour Citrix Gateway (premier VIP AAA Citrix ADC).
- Le premier VIP AAA de Citrix ADC reçoit une réponse SAML et confirme que le processus d’authentification de l’utilisateur est terminé.
- Citrix Gateway envoie les informations d’authentification à Citrix StoreFront™, qui énumère toutes les applications et tous les bureaux que l’utilisateur est autorisé à utiliser. Il traite également l’appartenance de l’utilisateur au groupe pour présenter les signets publiés sur Citrix Gateway.
Écrans d’authentification
La plupart des étapes mentionnées ci-dessus sont transparentes pour les utilisateurs car elles se déroulent en interne entre les différents VIP sur le Citrix ADC. L’expérience utilisateur est présentée ci-dessous :

Implémentation
Microsoft AD FS
Exigences en matière de certificat
Les serveurs de fédération nécessitent les certificats figurant dans le tableau suivant :
| Type de certificat | Description | Ce qu’il faut savoir avant le déploiement |
|---|---|---|
| Certificat Secure Sockets Layer (SSL) | Il s’agit d’un certificat Secure Sockets Layer (SSL) standard utilisé pour sécuriser les communications entre les serveurs de fédération et les clients. | Ce certificat doit être lié au site Web par défaut dans les services Internet (IIS) pour un serveur de fédération ou un proxy de serveur de fédération. Pour un proxy de serveur de fédération, la liaison doit être configurée dans IIS avant d’exécuter l’Assistant de configuration du proxy de serveur de fédération avec succès. Recommandation : Étant donné que ce certificat doit être approuvé par les clients d’AD FS, utilisez un certificat d’authentification de serveur émis par une autorité de certification (CA) publique (tierce). Par exemple, Verisign. Conseil : Le nom du sujet de ce certificat est utilisé pour représenter le nom du service de fédération pour chaque instance d’AD FS que vous déployez. Pour cette raison, vous pouvez envisager de choisir un nom de sujet sur tout nouveau certificat émis par une CA qui représente le mieux le nom de votre entreprise ou organisation auprès de vos partenaires. |
| Certificat de communication de service | Ce certificat active la sécurité des messages WCF pour sécuriser les communications entre les serveurs de fédération. | Par défaut, le certificat SSL est utilisé comme certificat de communication de service. Cela peut être modifié à l’aide de la console de gestion AD FS. |
| Certificat de signature de jeton | Il s’agit d’un certificat X509 standard utilisé pour signer en toute sécurité tous les jetons émis par le serveur de fédération. | Le certificat de signature de jeton doit contenir une clé privée et doit être chaîné à une racine de confiance dans le service de fédération. Par défaut, AD FS crée un certificat auto-signé. Cependant, vous pouvez le remplacer ultérieurement par un certificat émis par une autorité de certification à l’aide du composant logiciel enfichable de gestion AD FS, en fonction des besoins de votre organisation. |
| Certificat de déchiffrement de jeton | Il s’agit d’un certificat SSL standard utilisé pour déchiffrer tous les jetons entrants chiffrés par un serveur de fédération partenaire. Il est également publié dans les métadonnées de fédération. | Par défaut, AD FS crée un certificat auto-signé. Cependant, vous pouvez le remplacer ultérieurement par un certificat émis par une autorité de certification à l’aide du composant logiciel enfichable de gestion AD FS, en fonction des besoins de votre organisation. |
Configuration de l’environnement de démonstration
| Type de certificat | Configuration de l’environnement de démonstration |
|---|---|
| Certificat Secure Sockets Layer (SSL) | Certificat interne émis par une autorité de certification interne sur le serveur AD FS. Certificat public de confiance sur Citrix ADC. |
| Certificat de communication de service | Certificat interne émis par l’autorité de certification émettrice interne d’AHS. |
| Certificat de signature de jeton | Généré automatiquement par le service AD FS. |
| Certificat de déchiffrement de jeton | Généré automatiquement par le service AD FS. |
Dans l’environnement de démonstration, un certificat générique est inscrit et installé sur le serveur.

Exigences relatives au compte de service
Vous pouvez soit créer un compte de service, soit utiliser des comptes de service gérés de groupe (gMSA). Pour utiliser gMSA, vous devez créer une clé racine de service de distribution de clés. Lancez donc PowerShell et exécutez la commande suivante :
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
<!--NeedCopy-->
Cette commande crée une clé racine de service de distribution de clés, stockée dans Active Directory, et elle vous permet de créer un compte de service géré de groupe (gMSA) en tant que compte de service AD FS que vous créerez ultérieurement. Exécutez cette commande avec les droits d’administrateur de domaine.

Exigences relatives aux enregistrements DNS
Vous avez besoin d’un enregistrement DNS A pour votre nom de service de fédération AD FS en interne et en externe. Dans l’environnement de démonstration, l’enregistrement DNS interne pointe vers l’adresse IP du serveur AD FS et l’enregistrement DNS externe pointe vers l’adresse IP publique de Citrix Gateway.
| Nom de l’enregistrement | Portée | Type | Adresse IP |
|---|---|---|---|
| sts.ctxdemox.com | Interne | A | 22.22.22.6 |
| sts.ctxdemox.com | Externe | A | 40.85.225.175 |
Ajouter le rôle AD FS et configurer la ferme AD FS
Ajouter le rôle AD FS
Pour ajouter le rôle AD FS à Windows Server 2016, lancez PowerShell et exécutez la commande suivante :
Install-WindowsFeature AD FS-Federation -IncludeManagementTools
<!--NeedCopy-->

Configurer la ferme AD FS
Maintenant, vous pouvez commencer la configuration post-déploiement d’AD FS à partir du Gestionnaire de serveur. Cliquez sur Configurer le service de fédération sur ce serveur.

Sur la page Bienvenue, sélectionnez Créer le premier serveur de fédération dans une batterie de serveurs de fédération, puis cliquez sur Suivant.

Sur la page Se connecter aux services de domaine Active Directory, assurez-vous que le compte d’administrateur de domaine est spécifié, puis cliquez sur Suivant.

Sur la page Spécifier les propriétés du service, effectuez les étapes suivantes, puis cliquez sur Suivant :
- Choisissez le certificat qui a été installé sur le serveur lors des étapes précédentes.
- Le nom du service de fédération sera automatiquement renseigné en fonction du nom du sujet du certificat.
- Saisissez le nom d’affichage du service de fédération. Par exemple, CTXDEMOS STS.

Sur la page Spécifier le compte de service, sélectionnez Créer un compte de service géré de groupe et saisissez un nom unique pour ce compte. Les comptes de service gérés de groupe sont pris en charge à partir de Windows Server 2012 et sont associés à des mots de passe stricts et complexes qui sont modifiés automatiquement tous les 30 jours. Cliquez sur Suivant.

Sur la page Spécifier la base de données de configuration, sélectionnez l’emplacement d’une base de données SQL Server. Cliquez sur Suivant.

Sur la page Review Options (Vérifier les options), vérifiez vos sélections de configuration, puis cliquez sur Next (Suivant).

Sur la page Pre-requisite Checks (Vérifications des prérequis), vérifiez que toutes les vérifications des prérequis sont terminées avec succès, puis cliquez sur Configure (Configurer).

Sur la page Results (Résultats), assurez-vous que l’installation est réussie. Cliquez sur Close (Fermer) pour quitter l’assistant.

Remarque :
Pour effectuer les étapes suivantes, vous aurez besoin de votre ID de locataire Azure.
Vous pouvez obtenir l’ID de locataire Azure en suivant les étapes de l’article de la documentation Microsoft, Obtenir les détails du locataire AzureID.
La documentation Microsoft fournit également des informations sur le GUID client Azure MFA dans Configurer AD FS 2016 et Azure MFA.
Configurer la batterie de serveurs AD FS - automatisé
Vous pouvez exécuter le script PowerShell suivant :
#
# Windows PowerShell script for AD FS Deployment
#
Import-Module ADFS
Install-AdfsFarm `
-CertificateThumbprint:"BD02F30D90A96EEE4A5934F2EA979E7A052584AE" `
-FederationServiceDisplayName:"CTXDEMOS STS" `
-FederationServiceName:"adfs.ctxdemos.com" `
-GroupServiceAccountIdentifier:"C
<!--NeedCopy-->
Configurer AD FS avec Azure MFA
Configurer les serveurs AD FS
Sur chacun de vos serveurs AD FS, lancez PowerShell et exécutez les commandes suivantes :
# 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-->
Configurer la batterie de serveurs AD FS
Sur l’un des serveurs AD FS uniquement, exécutez la commande suivante :
Set-AdfsAzureMfaTenant -TenantId $azureTenantID -ClientId $azureMFAClientGUID
<!--NeedCopy-->
Redémarrez le service AD FS sur chacun de vos serveurs. Vous verrez alors qu’Azure MFA est disponible en tant que méthode d’authentification principale et multifactorielle pour l’utilisation intranet et extranet.


Configurer AD FS avec Citrix ADC
Vous devez créer une approbation de fédération entre AD FS et Citrix ADC. Dans la console de gestion AD FS, accédez à Approbations de partie de confiance et sélectionnez Ajouter une approbation de partie de confiance.

Sélectionnez Entrer les données concernant la partie de confiance manuellement et cliquez sur Suivant.

Saisissez un nom d’affichage descriptif et des notes facultatives. Cliquez sur Suivant.

Cliquez sur Suivant.

Sélectionnez Activer la prise en charge du protocole SAML 2.0 WebSSO et entrez https://CitrixGatewayFQDN/cgi/samlauth. Dans l’environnement de démonstration, il s’agit de https://access.ctxdemos.com/cgi/samlauth. Cliquez sur Suivant.

Saisissez une chaîne d’identifiant unique pour l’approbation de partie de confiance. Dans l’environnement de démonstration, il s’agit de https://access.ctxdemos.com. Cet identifiant sera utilisé comme URL de l’émetteur dans le profil SAML de Citrix ADC. Cliquez sur Suivant.

Sur la page Choisir la stratégie de contrôle d’accès, sélectionnez Autoriser tout le monde et exiger l’authentification multifacteur. Cliquez sur Suivant.

Cliquez sur Suivant.

Sur la page Terminer, sélectionnez Configurer la stratégie d’émission de revendications pour cette application. Cliquez sur Fermer.

Sur la page Règles de transformation d’émission, cliquez sur Ajouter une règle.

Cliquez sur Suivant.

Saisissez un nom descriptif dans le champ Nom de la règle de revendication. Sous Magasin d’attributs, sélectionnez Active Directory. Sélectionnez ensuite les éléments suivants : Attributs LDAP et Types de revendications sortantes.

Créez une nouvelle règle et utilisez Send Claims Using a Custom Rule comme Claim rule template. Saisissez un nom descriptif pour Claim rule name et la chaîne suivante pour Custom rule :
=> 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-->

Une fois les stratégies d’émission de revendications créées, cliquez sur Ok.
Cliquez avec le bouton droit sur Relying Party Trust > Citrix ADC, puis sélectionnez Properties. Sélectionnez Endpoints et ajoutez un point de terminaison en cliquant sur Add SAML for Logout. Dans la liste Endpoint type, sélectionnez SAML Logout. Pour Binding, sélectionnez POST, et pour Trusted URL, entrez https://sts.ctxdemos.com/adfs/ls/?wa=wsignout1.0. Cela agira comme une URL de déconnexion lors de la déconnexion de Citrix ADC. Cliquez sur OK.

Cliquez avec le bouton droit sur Relying Party Trust > Citrix ADC, puis sélectionnez Properties. Sélectionnez Encryption et ajoutez le certificat SSL public installé sur Citrix Gateway. Ce certificat sera utilisé pour déchiffrer une requête SML entrante de Citrix ADC. Répétez la même opération sur l’onglet Signature. Ce certificat sera utilisé pour vérifier la signature d’une requête SAML entrante. Cliquez sur OK.
Activer la page de connexion initiée par l’IdP
Vous pouvez activer la page de connexion initiée par l’IdP d’AD FS. Vous utiliserez la connexion initiée par l’IdP pour présenter une page d’erreur personnalisée aux utilisateurs MFA non enregistrés. Pour l’activer, exécutez la commande suivante :
Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
<!--NeedCopy-->
Tester la batterie de serveurs AD FS
Ouvrez un navigateur Web et accédez à :
- 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 et Citrix Gateway
Configurer Citrix Gateway
Vous pouvez configurer Citrix Gateway via l’assistant. Connectez-vous à l’interface graphique de gestion de Citrix ADC, accédez à Unified Gateway, puis cliquez sur Create New Gateway. Cliquez ensuite sur Continue.
Accès public unique(/fr-fr/advanced-concepts/media/adfs-single-public-access.png)
Saisissez le nom, l’adresse IP et le FQDN pour Unified Gateway, puis cliquez sur Continue.
Configuration de Citrix Gateway(/fr-fr/advanced-concepts/media/adfs-gateway-configuration.png)
Sélectionnez le certificat SSL public, puis cliquez sur Continue.
Certificat de serveur(/fr-fr/advanced-concepts/media/adfs-server-certificate.png)
Créez une stratégie LDAP de base et liez-la à Unified Gateway. Cliquez sur Continue.
Authentification(/fr-fr/advanced-concepts/media/adfs-authentication.png)
Créez un thème de portail basé sur RfWebUI et liez-le à Unified Gateway. Cliquez sur Continue.
Thème du portail(/fr-fr/advanced-concepts/media/adfs-portal-theme.png)
Sélectionnez le signe plus (+) devant les applications pour intégrer Citrix Gateway à StoreFront.
Intégrer Gateway à StoreFront(/fr-fr/advanced-concepts/media/adfs-applications.png)
Intégrer Citrix StoreFront dans Citrix Gateway
Sur la page Application, sélectionnez XenApp & XenDesktop®, et dans la liste Choose Integration Point, sélectionnez StoreFront. Cliquez sur Continue.
Sélectionner plusieurs paramètres(/fr-fr/advanced-concepts/media/adfs-storefront.png)
Entrez une URL StoreFront et cliquez sur Récupérer les magasins. Ensuite, entrez les paramètres Domaine Active Directory par défaut et URL de l’autorité de ticket sécurisé. Cliquez sur Tester la connectivité STA, puis cliquez sur Continuer.

Cliquez sur Terminé, puis cliquez sur Continuer.

Configurer Citrix Gateway et l’intégrer à 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-->
Configurer le premier serveur d’authentification
# 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-->
Configurer un deuxième serveur d’authentification
# 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-->
Configurer Citrix ADC en tant que WAP AD FS
Exécutez les commandes suivantes dans l’interface de ligne de commande de Citrix ADC pour configurer Citrix ADC en tant que proxy d’application web (WAP) AD FS :
# 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-->
Configurer un flux d’authentification initial
# 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-->
Groupes de chiffrement
# 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-->
Fichier XML de schéma de connexion
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-->
Références
Authentification à NetScaler à l’aide d’AD FS 4.0 sur Server 2016, Citrix FAS et Azure MFA dans Azure Cloud. (2018). Consulté sur https://www.jgspiers.com/authentication-to-netscaler-using-ad-fs-4-0-server-2016-citrix-fas-azure-mfa-azure-cloud/
Configurer Azure MFA en tant que fournisseur d’authentification avec AD FS. (2019). Consulté sur https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa
Déploiement d’une batterie de serveurs de fédération. (2017). Consulté sur https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/deployment/deploying-a-federation-server-farm
Déploiement ADFS du service d’authentification fédéré. (2018). Consulté sur https://docs.citrix.com/fr-fr/citrix-virtual-apps-desktops/secure/federated-authentication-service/fas-architectures/fas-adfs.html
Guide de déploiement de NetScaler en tant que proxy des services de fédération Active Directory. (s.d.). Consulté sur https://www.citrix.com/content/dam/citrix/en_us/documents/products-solutions/guide-to-deploying-netscaler-as-an-active-directory-federation-services-proxy.pdf
Fonctionnement : Authentification multifacteur Azure. (2018). Consulté sur https://docs.microsoft.com/fr-fr/azure/active-directory/authentication/concept-mfa-howitworks
Planification d’un déploiement de l’authentification multifacteur Azure basé sur le cloud. (2019). Consulté sur https://docs.microsoft.com/fr-fr/azure/active-directory/authentication/howto-mfa-getstarted
Tijl Van den Broeck. (7 déc. 2017). ADFS v3 sur Windows Server 2012 R2 avec NetScaler. Consulté sur https://www.citrix.com/blogs/2015/05/29/adfs-v3-on-windows-server-2012-r2-with-netscaler/
Transition vers le cloud hybride et le SaaS avec Citrix Gateway. (s.d.). Consulté sur https://www.citrix.com/products/citrix-gateway/resources/netscaler-unified-gateway.html
Connexion utilisateur avec l’authentification directe Azure Active Directory. (2018). Consulté sur https://docs.microsoft.com/fr-fr/azure/active-directory/hybrid/how-to-connect-pta
Rédigé par Saman Salehian, ingénieur commercial principal en réseau.