Authentification Entra ID via OIDC et authentification unique (SSO) vers VDA
Cet article décrit comment configurer StoreFront et un NetScaler ADC pour permettre aux utilisateurs de s’authentifier avec Entra ID via OIDC, puis de s’authentifier de manière unique (SSO) auprès d’un VDA joint à Entra.
IMPORTANT :
L’authentification Entra ID via OIDC et l’authentification unique (SSO) vers VDA est actuellement en préversion. Cette fonctionnalité est fournie sans support et n’est pas encore recommandée pour une utilisation dans des environnements de production.
Prérequis
- NetScaler ADC
- StoreFront 2507 LTSR CU1 ou version ultérieure
- Expérience moderne
- Microsoft Entra ID et compte avec l’une des autorisations suivantes :
- Administrateur d’application cloud
- Administrateur d’application
- Administrateur général
- Abonnement DaaS avec connecteurs. Ceci n’est pas disponible avec CVAD.
- Desktops et/ou applications publiés
- Pour les lancements depuis un navigateur web vers l’application Citrix Workspace, afin d’activer le SSO vers les VDA, extension web Citrix.
Problèmes connus et limitations
- L’activation du service d’authentification fédérée sur un StoreFront utilisant l’authentification Entra ID n’est pas prise en charge et pourrait entraîner des échecs de lancement.
- Si un StoreFront inclut un site Citrix Virtual Apps and Desktops et qu’un utilisateur s’authentifie à l’aide d’Entra ID via OIDC, StoreFront n’énumère aucune ressource de ce site. [WSP-30880]
- L’authentification unique (SSO) Entra ID vers les VDA n’est prise en charge qu’avec l’authentification basée sur OIDC. Elle n’est pas prise en charge avec SAML.
- StoreFront utilise une grande quantité de RAM lorsqu’un utilisateur fait partie de nombreux groupes Entra. [WSP-29276]
Authentification Entra ID à l’aide d’OIDC
Cette section décrit comment configurer NetScaler et StoreFront afin que les utilisateurs puissent s’authentifier à l’aide d’Entra ID. Dans cette configuration, les utilisateurs peuvent avoir une identité hybride ou une identité Entra uniquement sans compte Active Directory.
Créer une application Microsoft Azure Entra ID
Une inscription d’application dans Microsoft Entra ID définit votre application afin qu’Entra ID la reconnaisse — dans ce cas, NetScaler OIDC. Cette inscription gère également les demandes d’authentification et d’autorisation de l’application. Étant donné qu’OAuth nécessite un fournisseur d’identité (IdP) fiable pour authentifier les utilisateurs et émettre des jetons, l’enregistrement de votre application indique à Entra ID : « Cette application vous utilise comme son IdP pour les flux OAuth. »
- Connectez-vous au portail Azure pour le locataire Entra ID que vous utilisez pour l’authentification NetScaler ou StoreFront.
- Accédez à Ressource Microsoft Entra ID > Gérer > Inscriptions d’applications, puis sélectionnez Nouvelle inscription.
- Nommez l’application, par exemple, Authentification NetScaler StoreFront.
- Sous Types de comptes pris en charge, sélectionnez Comptes dans ce répertoire organisationnel uniquement.
-
Sous URI de redirection, sélectionnez Web pour le type d’application que vous souhaitez créer. Saisissez l’URI où le jeton d’accès est envoyé. Utilisez le format <URL du serveur virtuel NetScaler>/oauth/login, par exemple
https://netscalerentra.customer.com/oauth/login.
Créer un secret client
Pour créer un secret client :
- Après avoir enregistré l’application, accédez à Gérer > Certificats et secrets.
- Sélectionnez Secrets client, puis sélectionnez Nouveau secret client. Votre application utilise ces informations d’identification pour communiquer en toute sécurité avec l’IdP et demander des jetons.
- Fournissez une description du secret et une durée.
- Après avoir créé le secret, enregistrez sa valeur, car vous en aurez besoin plus tard dans le processus de configuration et elle n’est visible que pendant cette étape de création.

Configurer les autorisations d’application
Pour configurer les autorisations d’application :
- Accédez à Gérer > Inscriptions d’applications, puis sélectionnez votre application.
- Sélectionnez Gérer > Autorisations d’API.
- L’autorisation User.Read est déjà ajoutée par défaut.
- Ajoutez openid et profile.
- Sélectionnez Accorder le consentement administrateur pour <nom du locataire> et acceptez.
« Accorder le consentement administrateur pour » dans les autorisations d’API dans Microsoft Entra ID signifie qu’un administrateur donne son approbation, au nom de tous les utilisateurs de l’organisation, pour qu’une application accède à des ressources ou des API spécifiques avec les autorisations demandées.

Configurer Citrix DaaS pour activer la confiance XML
Par défaut, Citrix DaaS authentifie les requêtes à l’aide des informations d’identification Active Directory de l’utilisateur. Avec l’authentification Entra ID, StoreFront ne dispose pas des informations d’identification. Par conséquent, vous devez configurer DaaS pour qu’il fasse confiance à StoreFront sans exiger d’authentification. Il est fortement recommandé d’activer les clés de sécurité pour fournir une authentification au niveau du service à la place.
- Connectez-vous à Citrix Cloud et accédez à la console DaaS.
- Accédez à Paramètres.
-
Activez la confiance XML.

- (Étape facultative) Pour une sécurité accrue, vous pouvez activer les clés de sécurité entre DaaS et StoreFront. Pour plus d’informations, consultez Gérer les clés de sécurité dans la documentation Citrix DaaS™.
Configurer le profil d’authentification NetScaler
Cette section décrit comment configurer un profil d’authentification NetScaler que vous pouvez lier à votre serveur virtuel VPN de passerelle. Cette configuration indique à l’ADC comment rediriger les utilisateurs vers un IdP OAuth externe (tel que Microsoft Entra ID) pour la connexion et comment gérer les jetons OAuth reçus après l’authentification. Elle spécifie les points de terminaison, les informations d’identification du client, les étendues et la manière dont l’ADC extrait les informations utilisateur des jetons.
Vous avez besoin du secret client des étapes précédentes et des points de terminaison d’authentification Microsoft Entra ID. Vous pouvez trouver les points de terminaison d’authentification dans le portail Azure en accédant à la vue d’ensemble de votre enregistrement d’application et en cliquant sur l’onglet Points de terminaison.
Créer un serveur virtuel d’authentification
Le serveur virtuel d’authentification gère l’authentification des utilisateurs.
add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
-state ENABLED \
-authentication ON \
-td 0 -appflowLog ENABLED \
-noDefaultBindings NO
bind ssl vserver EntraId_Authentication_VirtualServer \
-certkeyName <Certificate Key Name>
<!--NeedCopy-->
Créer une stratégie et une action OAuth
L’action OAuth spécifie comment NetScaler ADC interagit avec un IdP OAuth tel que Microsoft Entra ID. Cette action permet à Citrix Gateway de rediriger les utilisateurs vers l’IdP pour la connexion et de gérer le jeton OAuth renvoyé. Elle définit userNameField sur oid, ce qui amène la passerelle à transmettre l’OID comme nom d’utilisateur lors de l’authentification auprès de StoreFront. StoreFront valide que l’OID correspond aux détails qu’il obtient en recherchant le jeton d’accès Entra ID, sinon l’authentification échoue.
Vous avez besoin de l’ID client et du secret client des étapes précédentes.
add authentication OAuthAction EntraId_Oauth_Server \
-authorizationEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize\?prompt=login" \
-tokenEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token" \
-clientID <ClientId> \
-clientSecret <ClientSecret> \
-Attribute1 email \
-Attribute2 family_name \
-Attribute3 given_name \
-Attribute4 upn \
-CertEndpoint "https://login.microsoftonline.com/<TenantId>/discovery/v2.0/keys" \
-userNameField oid \
-allowedAlgorithms HS256 RS256 RS512 \
-PKCE ENABLED \
-tokenEndpointAuthMethod client_secret_post \
-OAuthType GENERIC \
-grantType CODE \
-refreshInterval 1440
add authentication Policy EntraId_Authentication_Policy \
-rule true \
-action EntraId_Oauth_Server
<!--NeedCopy-->
Le authorizationEndpoint inclut le paramètre de chaîne de requête prompt=login afin que les utilisateurs soient forcés de se réauthentifier lorsqu’ils tentent d’accéder à StoreFront via le NetScaler.
Lier la stratégie d’authentification au serveur virtuel
bind authentication vserver EntraId_Authentication_VirtualServer \
-policy EntraId_Authentication_Policy \
-priority 100 \
-gotoPriorityExpression END
<!--NeedCopy-->
Créer un profil d’authentification
add authentication authnProfile EntraId_Auth_Profile \
-authnVsName EntraId_Authentication_VirtualServer \
-AuthenticationLevel 0
<!--NeedCopy-->
Créer un serveur virtuel VPN et lier le profil d’authentification
Effectuez les étapes 1, 2 et 4 de Intégrer NetScaler Gateway à StoreFront, en utilisant le profil d’authentification créé lors des étapes précédentes.
Alternativement, si vous disposez déjà d’un Citrix Gateway approprié, vous pouvez lui lier le nouveau profil d’authentification. L’exécution de cette commande remplace le profil d’authentification existant.
set vpn vserver <StoreFront ICA Proxy vServer> \
-authentication ON \
-authnProfile EntraId_Auth_Profile
<!--NeedCopy-->
Configuration de l’injection de jetons Entra ID pour l’authentification unique (SSO) vers StoreFront
Après que le Citrix Gateway a authentifié l’utilisateur, il doit transmettre suffisamment d’informations à StoreFront afin que celui-ci puisse valider l’authentification de l’utilisateur et rechercher son appartenance à des groupes. Par défaut, le Citrix Gateway n’envoie que le nom d’utilisateur et le mot de passe Active Directory. Dans le cas de l’authentification Entra ID, il doit transmettre le jeton d’accès Entra ID afin que StoreFront puisse rechercher les informations utilisateur à l’aide de l’API Microsoft Graph. Pour ce faire, vous devez ajouter une stratégie de réécriture qui ajoute le jeton Entra ID à l’appel qu’il effectue pour authentifier l’utilisateur auprès de StoreFront. Si la stratégie de réécriture du jeton d’accès Entra ID ne prend pas effet, la connexion échouera. Si la fonctionnalité de stratégie de réécriture est désactivée par défaut et n’est pas déjà activée, vous devez l’activer en premier.
enable ns feature Rewrite
add rewrite action EntraId_Oauth_Insert_AccessToken_Header insert_http_header X-Citrix-OIDC-Access-Token "AAA.USER.ATTRIBUTE(\"accesstoken\")" \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
add rewrite policy EntraId_Oauth_Insert_AccessToken_Policy "HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"gatewayauth/login\") || HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"citrixagbasic/authenticate\")" EntraId_Oauth_Insert_AccessToken_Header \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
bind vpn vserver <StoreFront ICA Proxy vServer> \
-policy EntraId_Oauth_Insert_AccessToken_Policy \
-priority 100 \
-gotoPriorityExpression END \
-type REQUEST
<!--NeedCopy-->
Configurer Citrix Gateway dans StoreFront
-
Configurer les Citrix Gateways.
-
Définissez le type de connexion sur Domaine.
-
Spécifiez une URL de rappel valide. Ceci est requis pour l’authentification Entra ID avec StoreFront.
-
-
Configurer la passerelle pour l’accès à distance pour le Store qui agrège les ressources Citrix DaaS.
-
Activez et configurez l’authentification Entra ID depuis NetScaler Gateway. Exécutez le script PowerShell suivant, en remplaçant l’ID de locataire par l’ID de votre locataire Entra ID et
/Citrix/EntraStorepar le chemin du magasin.
$store = Get-STFStoreService /Citrix/EntraStore
$authenticationService = Get-STFAuthenticationService -Store $store
Set-STFEntraIdSettings -AuthenticationService $authenticationService -TenantId "<Your tenant id>" -Enabled $true
<!--NeedCopy-->
Configurer l’authentification unique (SSO) Entra ID vers les VDA
Une fois que vous avez configuré StoreFront et votre passerelle Citrix pour authentifier les utilisateurs à l’aide d’Entra ID, vous pouvez activer l’authentification unique (SSO) Entra ID vers les VDA sans avoir besoin de FAS. N’activez cette option qu’une fois la configuration DaaS terminée. Pour plus d’informations, consultez Authentification unique Microsoft Entra. Cela nécessite la configuration supplémentaire suivante pour StoreFront et le NetScaler ADC.
Configurer la commutation de contenu NetScaler ADC
Normalement, toutes les requêtes vers StoreFront passent par le VServer de la passerelle et nécessitent donc une authentification. Lorsque l’utilisateur lance un VDA joint à Entra ID, l’application Citrix Workspace doit à nouveau s’authentifier auprès d’Azure (SSO si la session Entra ID est toujours valide) et récupérer un jeton d’accès. Dans le cadre de ce flux, StoreFront génère un jeton qui doit être validé par un service exécuté dans Citrix Cloud. Ce service doit pouvoir rappeler le point de terminaison StoreFront /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket pour valider le jeton. Comme ce service n’a pas accès à la session NetScaler, il est nécessaire de contourner le service virtuel VPN pour les appels visant à échanger le ticket. Pour ce faire, vous pouvez utiliser un commutateur de contenu.

Les appels vers /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket sont dirigés vers un équilibreur de charge qui transmet les requêtes à StoreFront, en contournant la passerelle. Notez que l’équilibreur de charge est nécessaire car le commutateur de contenu ne peut pas être configuré pour diriger le trafic directement vers une URL et nécessite un serveur virtuel comme cible. L’équilibreur de charge n’effectue aucune répartition de charge et se contente de transmettre le trafic à StoreFront. Si vous disposez déjà d’un équilibreur de charge StoreFront approprié sur la même machine, vous pouvez l’utiliser à la place.
Tous les autres appels sont dirigés vers le serveur virtuel VPN de la passerelle.
Créer un équilibreur de charge pour le transfert du commutateur de contenu vers StoreFront
Si vous disposez déjà d’un serveur virtuel d’équilibrage de charge devant votre groupe de serveurs StoreFront et exécuté sur la même machine que la passerelle, vous pouvez ignorer cette étape et configurer le commutateur de contenu pour envoyer le trafic directement à ce serveur virtuel. Sinon, vous devez créer un équilibreur de charge pour transférer le trafic vers le ou les serveurs StoreFront. En effet, les actions du commutateur de contenu doivent faire référence à un serveur virtuel.
Les étapes sont légèrement différentes selon que StoreFront est configuré pour HTTPS (recommandé) ou HTTP.
StoreFront est configuré pour HTTPS
Créez un service stf_srv représentant StoreFront à l’aide de son adresse IP et liez-le à un équilibreur de charge SSL sans persistance.
add service stf_srv <StoreFront Ip Address> SSL 443
add lb vserver lb_vs SSL <lb_vs Ip Address> 443 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
StoreFront est configuré pour HTTP
Créez un service stf_srv représentant StoreFront à l’aide de son nom de domaine complet (FQDN) et liez-le à un équilibreur de charge HTTP sans persistance.
add server storefront1 <storefront fqdn>
add service stf_srv storefront1 HTTP 80
add lb vserver lb_vs HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
Créer un serveur virtuel de commutation de contenu SSL
Créez un serveur virtuel de commutation de contenu SSL pour gérer les requêtes client. Ce serveur virtuel de commutation de contenu écoute le trafic HTTPS sur le port 443 et achemine les requêtes soit vers le serveur virtuel VPN de la passerelle, soit directement vers StoreFront via l’équilibreur de charge.
Par défaut, la commutation de contenu est désactivée, vous devez donc l’activer si vous ne l’avez pas déjà fait.
enable feature CS
add cs vserver cs_vs SSL <cs_vs Ip Address> 443 -cltTimeout 180 -persistenceType NONE
bind ssl vserver cs_vs -certkeyName <Certificate Name>
<!--NeedCopy-->
Créer une stratégie de commutation de contenu pour l’échange de tickets
Créez une stratégie de commutation de contenu pour l’équilibrage de charge basée sur une URL contenant un chemin d’échange de tickets StoreFront.
Cette stratégie correspond aux requêtes lorsque l’URL contient /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket et les achemine vers l’équilibreur de charge sans passer par le serveur virtuel VPN.
Remplacez StoreEntraWeb par le nom du site Web StoreFront de la stratégie Web du serveur virtuel StoreFront. Vous pouvez utiliser l’équilibreur de charge lb_vs créé à l’étape précédente, ou un serveur virtuel d’équilibrage de charge existant devant vos serveurs StoreFront.
add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/<StoreWeb>/Tickets/RedeemStoreTicket\")" -action cs_lb_vs
bind cs vserver cs_vs -policyName cs_lb_vs_pol -priority 100
<!--NeedCopy-->
Créer une stratégie de commutation de contenu pour tout autre trafic
Créez une stratégie de commutation de contenu générique pour envoyer tout autre trafic StoreFront via le serveur virtuel VPN pour l’authentification.
add cs action cs_vpn_vs -targetVserver <VPN vServer>
add cs policy cs_vpn_pol -rule TRUE -action cs_vpn_vs
bind cs vserver cs_vs -policyName cs_vpn_pol -priority 110
<!--NeedCopy-->
Configurer l’authentification unique Entra ID VDA
L’authentification unique permet aux utilisateurs de s’authentifier une seule fois lorsqu’ils se connectent à Citrix Gateway, puis d’accéder à leurs bureaux virtuels et applications sans avoir à ressaisir leurs informations d’identification dans le VDA.
$store = Get-STFStoreService /Citrix/EntraStore
Set-STFStoreLaunchOptions -StoreService $store -EntraIdSsoEnabled $true
<!--NeedCopy-->
Considérations relatives à l’activation ou la désactivation de l’authentification unique Entra ID
- N’activez l’authentification unique Entra ID qu’une fois que vous avez terminé toutes les configurations décrites dans Authentification unique Microsoft Entra. Sinon, l’authentification unique échouera et les utilisateurs pourraient rencontrer des retards de lancement ou des erreurs.