StoreFront

Authentification Entra ID via OIDC et authentification unique aux VDA

Cet article explique comment configurer StoreFront et un NetScaler ADC pour permettre aux utilisateurs de s’authentifier auprès d’Entra ID via OIDC, puis de s’authentifier de manière unique auprès d’un VDA joint à Entra.

IMPORTANT :

L’authentification Entra ID via OIDC et l’authentification unique aux VDA sont 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.

Conditions préalables

  • NetScaler ADC
  • StoreFront 2511 ou version ultérieure
  • Microsoft Entra ID et un compte disposant de 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.
  • Des bureaux et/ou des applications publiés
  • Pour les lancements depuis un navigateur web vers l’application Citrix Workspace, afin d’activer l’authentification unique aux VDA, l’extension web Citrix.

Authentification Entra ID à l’aide d’OIDC

Cette section explique 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 IdP pour les flux OAuth. »

  1. Connectez-vous au portail Azure pour le locataire Entra ID que vous utilisez pour l’authentification NetScaler ou StoreFront.
  2. Accédez à Ressource Microsoft Entra ID > Gérer > Inscriptions d’applications, puis sélectionnez Nouvelle inscription.
  3. Nommez l’application, par exemple, Authentification NetScaler StoreFront.
  4. Sous Types de comptes pris en charge, sélectionnez Comptes dans ce répertoire organisationnel uniquement.
  5. 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.

ID Azure

Créer un secret client

Pour créer un secret client :

  1. Après avoir enregistré l’application, accédez à Gérer > Certificats et secrets.
  2. 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.
  3. Fournissez une description du secret et une durée.
  4. 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 qu’à cette étape de la création.

Azure NetScaler

Configurer les autorisations de l’application

Pour configurer les autorisations de l’application :

  1. Accédez à Gérer > Inscriptions d’applications, puis sélectionnez votre application.
  2. Sélectionnez Gérer > Autorisations d’API.
  3. L’autorisation User.Read est déjà ajoutée par défaut.
  4. Ajoutez openid et profile.
  5. Sélectionnez Accorder le consentement de l’administrateur pour <nom du locataire> et acceptez.

« Accorder le consentement de l’administrateur pour » dans les autorisations d’API de 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.

Autorisation Azure

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 de ces 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.

  1. Connectez-vous à Citrix Cloud et accédez à la console DaaS.
  2. Accédez à Paramètres.
  3. Activez la confiance XML.

Autorisation Azure

  1. (É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 de Citrix DaaS™.

Configurer le profil d’authentification NetScaler

Cette section explique 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 inscription 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
<!--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 le champ 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éé aux étapes précédentes.

Alternativement, si vous disposez déjà d’une passerelle Citrix appropriée, vous pouvez y 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 à StoreFront

Une fois que la passerelle Citrix a authentifié l’utilisateur, elle doit transmettre suffisamment d’informations à StoreFront afin qu’il puisse valider l’authentification de l’utilisateur et rechercher l’appartenance au groupe. Par défaut, la passerelle Citrix n’envoie que le nom d’utilisateur et le mot de passe Active Directory. Dans le cas de l’authentification Entra ID, elle 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’elle 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 d’abord l’activer.

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

  1. Ajoutez une instance NetScaler Gateway sur StoreFront.

  2. Configurez les passerelles Citrix.

    • 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.

  3. Configurez la passerelle pour l’accès à distance pour le Store agrégeant les ressources Citrix DaaS.

  4. 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/EntraStore par le chemin du Store.

$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 Entra ID aux 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 Entra ID aux 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 serveur virtuel 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 (authentification unique 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. Étant donné que ce service n’a pas accès à la session NetScaler, il est nécessaire de contourner le service virtuel VPN pour les appels de validation du ticket. Pour ce faire, vous pouvez utiliser un commutateur de contenu.

Diagramme montrant le flux de requêtes à l’aide du commutateur de contenu

Les appels à /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 requis 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 passage du commutateur de contenu à 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 qu’il envoie le trafic directement à ce serveur virtuel. Sinon, vous devez créer un équilibreur de charge pour acheminer le trafic vers le ou les serveurs StoreFront. Cela est dû au fait que 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/StoreEntraWeb/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/StoreEntraWeb/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 et applications virtuels 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

  1. N’activez l’authentification unique que si vous configurez l’application d’entreprise Azure Entra ID et mettez à jour StoreFront avec le locataire. Si vous activez ce paramètre pour les Stores utilisant actuellement Entra ID avec SAML sans ces paramètres, cela peut potentiellement interrompre l’authentification unique existante si vous utilisez FAS.
  2. Si vous activez le paramètre pour les Stores existants utilisant Entra ID avec SAML où les VDA n’ont pas actuellement d’authentification unique, le lancement peut être retardé et/ou vous pourriez voir des erreurs liées aux paramètres d’authentification Entra ID.
Authentification Entra ID via OIDC et authentification unique aux VDA