ADC

Citrix ADC en tant que fournisseur d’identité OAuth

Citrix ADC peut désormais être configuré en tant que fournisseur d’identité à l’aide du protocole OpenID-Connect (OIDC). Le protocole OIDC renforce les fonctionnalités de fourniture d’identité de Citrix ADC. Vous pouvez désormais accéder à l’application hébergée à l’échelle de l’entreprise avec une authentification unique, car OIDC offre plus de sécurité en ne transférant pas le mot de passe de l’utilisateur mais en utilisant des jetons avec une durée de vie spécifique. OpenID est également conçu pour s’intégrer à des clients autres que des navigateurs, tels que des applications et des services. Par conséquent, le protocole OIDC est largement adopté par de nombreuses implémentations.

Remarque :

Citrix ADC doit disposer de la version 12.1 ou d’une version ultérieure pour fonctionner en tant qu’IdP OAuth à l’aide du protocole OIDC.

Avantages de Citrix ADC en tant que fournisseur d’identité OAuth

  • Élimine les frais liés à la gestion de plusieurs mots de passe d’authentification, car l’utilisateur possède une identité unique au sein de l’organisation.
  • Fournit une sécurité solide pour votre mot de passe, car le mot de passe est partagé uniquement avec votre fournisseur d’identité et non avec les applications auxquelles vous accédez.
  • Fournit une interopérabilité étendue avec divers systèmes, ce qui facilite l’acceptation d’OpenID par les applications hébergées.

Remarque

Citrix ADC Advanced Edition et versions ultérieures sont nécessaires au fonctionnement de la solution.

Pour configurer Citrix ADC en tant qu’IdP OAuth à l’aide de l’interface graphique

  1. Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > IdP OAuth.

  2. Cliquez sur Profil, puis sur Ajouter.

    Dans l’écran Créer un profil de fournisseur d’identité OAuth d’authentification, définissez des valeurs pour les paramètres suivants, puis cliquez sur Créer.

    • Nom  : nom du profil d’authentification. Doit commencer par une lettre, un chiffre ou le caractère de soulignement (_) et ne doit contenir que des lettres, des chiffres et le trait d’union (-), le point (.), la livre (#), l’espace (), à (@), égal à (=), deux-points (:) et les caractères de soulignement. Impossible de modifier une fois le profil créé.

    • Client ID : chaîne unique qui identifie le fournisseur de services. Le serveur d’autorisation déduit la configuration du client à l’aide de cet ID. Longueur maximale : 127.
    • Client Secret : chaîne secrète établie par l’utilisateur et le serveur d’autorisation. Longueur maximale : 239.
    • URL de redirection  : point de terminaison sur le SP auquel le code/jeton doit être publié.
    • Nom de l’émetteur  : identité du serveur dont les jetons doivent être acceptés. Longueur maximale : 127.
    • Audience  : destinataire cible du jeton envoyé par l’IdP. Cela peut être vérifié par le destinataire.
    • Skew Time (Temps d’inclinaison) : cette option spécifie le décalage d’horloge autorisé en minutes que Citrix ADC autorise sur un jeton entrant. Par exemple, si SkewTime est 10, le jeton sera valide de (heure actuelle - 10) min à (heure actuelle + 10) min, soit 20 min en tout. Valeur par défaut : 5
    • Groupe d’authentification par défaut  : groupe ajouté à la liste des groupes internes de session lorsque ce profil est choisi par IdP et peut être utilisé dans le flux nFactor. Il peut être utilisé dans l’expression (AAA.USER.IS_MEMBER_OF (« xxx »)) pour les stratégies d’authentification destinées à identifier le flux nFactor lié à la partie de confiance. Longueur maximale : 63

    A group added to the session for this profile to simplify policy evaluation and help in customizing policies. This is the default group that is chosen when the authentication succeeds in addition to the extracted groups. Maximum Length: 63.

  3. Cliquez sur Stratégies et cliquez sur Ajouter.

  4. Dans l’écran Créer une stratégie de fournisseur d’identité OAuth d’authentification, définissez des valeurs pour les paramètres suivants, puis cliquez sur Créer.

    • Name : nom de la stratégie d’authentification.
    • Action : nom du profil créé précédemment.
    • Log Action : nom de l’action du journal des messages à utiliser lorsqu’une demande correspond à cette stratégie. Ce n’est pas un dépôt obligatoire.
    • Action à résultat non défini — Action à exécuter si le résultat de l’évaluation de la stratégie n’est pas défini (UNDEF). Ce champ n’est pas obligatoire.
    • Expression : expression syntaxique par défaut utilisée par la stratégie pour répondre à une demande spécifique. Par exemple, true.
    • Comments : tout commentaire concernant la stratégie.

Liaison de la stratégie OAuthIDP et de la stratégie LDAP au serveur virtuel d’authentification

  1. Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > Actions > LDAP.

  2. Dans l’écran Actions LDAP, cliquez sur Ajouter.

  3. Dans l’écran Créer un serveur LDAP d’authentification, définissez les valeurs des paramètres suivants, puis cliquez sur Créer.

    • Nom : nom de l’action LDAP
    • ServerName/ServerIP : fournit le nom de domaine complet ou l’adresse IP du serveur LDAP
    • Choisissez les valeurs appropriées pour le type de sécurité, le port, le type de serveur et le délai d’expiration
    • Assurez-vous que l’authentification est cochée
    • DN de base : base à partir de laquelle lancer la recherche LDAP. Par exemple, dc=aaa, dc=local.
    • Administrator Bind DN : nom d’utilisateur de la liaison au serveur LDAP. Par exemple, admin@aaa.local.
    • Mot de passe administrateur/Confirmer le mot de passe : mot de passe pour lier LDAP
    • Cliquez sur Tester la connexion pour tester vos paramètres.
    • Attribut de nom d’ouverture de session du serveur : choisissez « SAMAccountName »
    • Les autres champs ne sont pas obligatoires et peuvent donc être configurés comme requis.
  4. Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > Stratégie.

  5. Dans l’écran Stratégies d’authentification, cliquez sur Ajouter.

  6. Sur la page Créer une stratégie d’authentification, définissez les valeurs des paramètres suivants, puis cliquez sur Créer.

    • Nom : nom de la stratégie d’authentification LDAP.
    • Type d’action : choisissez LDAP.
    • Action : choisissez l’action LDAP.
    • Expression : expression de syntaxe par défaut utilisée par la stratégie pour répondre à une demande spécifique. Par exemple, true**.

La fonctionnalité OAuth prend désormais en charge les fonctionnalités suivantes dans l’API de jeton du côté de la partie de confiance (RP) et du côté IdP de Citrix Gateway et Citrix ADC.

  • Prise en charge de PKCE (Proof Key for Code Exchange)

  • Prise en charge de client_assertion

Pour configurer Citrix ADC en tant qu’IdP à l’aide du protocole OIDC à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes :

add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]

add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string> [-undefAction <string>] [-comment <string>][-logAction <string>]

add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"

ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName

add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act

bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT

bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END

bind vpn global –certkey <>
<!--NeedCopy-->

Remarque

  • Vous pouvez lier plusieurs clés. Les parties publiques des certificats liés sont envoyées en réponse à jwks\_uri query (https://gw/oauth/idp/certs).

  • À partir de la version 13.0—85.19 de Citrix ADC, le point de terminaison introspectif OAuth IdP prend en charge la propriété active: true

  • Si le serveur virtuel d’authentification est configuré en tant qu’IdP OAuth, l’URL du point de terminaison de découverte OAuth IdP bien connu doit être https://<netscaler-oauth-idp-fqdn>/oauth/idp/.well-known/openid-configuration.

  • Citrix ADC configuré en tant qu’IdP OAuth n’affiche pas les méthodes d’authentification des points de terminaison de jeton client_secret_post, client_secret_jwt, private_key_jwt, et client_secret_basic dans la réponse .well-known-Endpoint envoyée au SP OAuth.

Prise en charge des jetons cryptés sur le protocole OIDC

Citrix ADC avec le mécanisme OIDC prend désormais en charge l’envoi de jetons chiffrés en même temps que des jetons signés. Le Citrix ADC utilise les spécifications de chiffrement Web JSON pour calculer les jetons chiffrés et ne prend en charge que la sérialisation compacte des jetons chiffrés. Pour chiffrer un jeton OpenID, un Citrix ADC a besoin de la clé publique de la partie utilisatrice (RP). La clé publique est obtenue dynamiquement en interrogeant le point de terminaison de configuration bien connu de la partie de confiance.

Une nouvelle option « relyingPartyMetadataUrl » est introduite dans le profil « authentification OAuthIDPProfile. »

Pour configurer le point de terminaison de la partie de confiance à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

```set authentication OAuthIDPProfile [-relyingPartyMetadataURL ] [-refreshInterval ] [-status < >]


-  **RelyingPartyMetadataURL**  : point de terminaison sur lequel le fournisseur d'identité Citrix ADC peut obtenir des détails sur la partie de confiance en cours de configuration. La réponse aux métadonnées doit inclure des points de terminaison pour jwks_uri pour les clés publiques RP.

-  **RefreshInterval**  : définit la fréquence à laquelle ce point de terminaison doit être interrogé pour mettre à jour les certificats en quelques minutes.

-  **status** - Indique le statut de l'opération d'interrogation. L'état est terminé une fois que Citrix ADC a réussi à obtenir les clés publiques.

    **Exemple**

    ```
    set authentication OAuthIDPProfile sample_profile -relyingPartyMetadataURL https://rp.customer.com/metadata -refreshInterval 50 -status < >
    <!--NeedCopy-->

Une fois le point de terminaison configuré, Citrix ADC interroge d’abord le point de terminaison connu de la partie utilisatrice pour lire la configuration. Actuellement, Citrix ADC traite uniquement le point de terminaison « jwks_uri ».

  • Si le ‘jwks_uri’ est absent de la réponse, l’état du profil n’est pas complet.
  • Si le ‘jwks_uri’ est présent dans la réponse, Citrix ADC interrogeait également ce point de terminaison pour lire les clés publiques de la partie de confiance.

Remarque : seuls les algorithmes de chiffrement RSAES-OAEP et AES GCM sont pris en charge pour le chiffrement des jetons.

Prise en charge des attributs personnalisés sur OpenID Connect

Les parties utilisatrices d’OpenID peuvent avoir besoin de plus qu’un nom d’utilisateur ou un nom principal d’utilisateur (UPN) dans le jeton pour créer le profil utilisateur ou prendre des décisions d’autorisation. Le plus souvent, les groupes d’utilisateurs sont tenus d’appliquer des stratégies d’autorisation pour l’utilisateur. Parfois, des informations supplémentaires, telles que le prénom ou le nom de famille, sont nécessaires pour provisionner un compte utilisateur.

Citrix ADC configuré en tant qu’IdP peut être utilisé pour envoyer des attributs supplémentaires dans le OIDCID_Token à l’aide d’expressions. Les expressions de stratégie avancées sont utilisées pour envoyer les attributs personnalisés conformément aux exigences. L’IdP Citrix évalue les expressions correspondant aux attributs, puis calcule le jeton final.

Citrix ADC s’applique automatiquement à JSONify dans les données de sortie. Par exemple, les nombres (tels que SSN) ou les valeurs booléennes (true ou false) ne sont pas entourés de guillemets. Les attributs à valeurs multiples, tels que les groupes, sont placés dans un marqueur de tableau (« [» et «] »). Les attributs de type complexe ne sont pas calculés automatiquement et vous pouvez configurer l’expression PI de ces valeurs complexes selon votre besoin.

Pour configurer le point de terminaison de la partie de confiance à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set oauthidpprofile <name> -attributes <AAA-custom-attribute-pattern>
<!--NeedCopy-->

Le <AAA-custom-attribute-pattern> peut être décrit comme :

Attribute1=PI-Expression@@@attribute2=PI-Expression@@@

‘attribute1’, ‘attribute2’ sont des chaînes littérales qui représentent le nom de l’attribut à insérer dans le id_token.

Remarque :

Dans l’exemple suivant, la valeur maximale de l’expression q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups} peut être de 2 000 octets. Il contient 4 attributs personnalisés (myname, ssn, jit, groups). La valeur maximale de chaque attribut personnalisé est de 10 000 octets. Par exemple, l’attribut groups (évalué sur la base de l’expression PI http.req.user.groups) peut contenir jusqu’à 10 000 octets de données dans le OIDCID_Token.

Exemple : set oauthidpprofile sample_1 -attributes q"{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}"

  • L’expression PI précédente est une expression de stratégie avancée qui représente la valeur à utiliser pour l’attribut. L’expression PI peut être utilisée pour envoyer un littéral de chaîne, tel que “’chaîne codée en dur”’. La chaîne littérale est entourée de guillemets doubles autour de guillemets simples ou de guillemets doubles autour d’un modèle de départ (le modèle de début est "q()"). Si la valeur de l’attribut n’est pas un littéral de chaîne, l’expression est évaluée au moment de l’exécution et sa valeur est envoyée en jeton. Si la valeur au moment de l’exécution est vide, l’attribut correspondant n’est pas ajouté au jeton d’identification.
  • Comme défini dans l’exemple, « false » est une chaîne littérale pour l’attribut « jit ». En outre, ssn possède une valeur codée en dur pour référence. Les groupes et myname sont des expressions PI qui produisent des chaînes.

Prise en charge des déploiements GSLB actifs-actifs sur Citrix Gateway

Citrix Gateway configuré en tant que fournisseur d’identité (IdP) à l’aide du protocole OIDC peut prendre en charge les déploiements GSLB actifs-actifs. Le déploiement GSLB actif-actif sur le fournisseur d’identité Citrix Gateway permet d’équilibrer la charge d’une demande de connexion utilisateur entrante sur plusieurs emplacements géographiques.

Important

Citrix vous recommande de lier des certificats d’autorité de certification au service SSL et d’activer la validation des certificats sur le service SSL pour une sécurité accrue.

Pour plus d’informations sur la configuration d’une installation GSLB, consultez Exemple d’installation et de configuration d’un GSLB.

Citrix ADC en tant que fournisseur d’identité OAuth