Citrix ADC

Citrix ADC en tant qu’IdP OAuth

Une appliance Citrix ADC peut désormais être configurée en tant que fournisseur d’identité à l’aide du protocole OpenID-Connect (OIDC). Le protocole OIDC renforce les capacités fournissant l’identité de l’appliance 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 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 non 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 être sur la version 12.1 ou ultérieure pour que l’appliance fonctionne en tant qu’IdP OAuth à l’aide du protocole OIDC.

Avantages d’avoir Citrix ADC en tant qu’IdP OAuth

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

Remarque

Citrix ADC Advanced Edition et version ultérieure est nécessaire pour que la solution fonctionne.

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

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

  2. Cliquez sur Profil et cliquez sur Ajouter.

    Dans l’écran Créer une authentification OAuth IDP Profile, définissez les valeurs des paramètres suivants et 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 contenir que des lettres, des chiffres et des traits d’union (-), point (.) dièse (#), espace ( ), arobase (@), égal (=), deux-points (:) et trait de soulignement. Impossible de modifier le profil après la création du profil.

    • ID client — Chaîne unique qui identifie le SP. Le serveur d’autorisation infère 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 SP vers lequel le code/jeton doit être posté.
    • Nom de l’émetteur — Identité du serveur dont les jetons doivent être acceptés. Longueur maximale : 127.
    • Audience — Destinataire cible du jeton envoyé par IdP. Cela peut être vérifié par le destinataire.
    • Temps d’inclinaison  : cette option spécifie l’inclinaison d’horloge autorisée en nombre de minutes que Citrix ADC autorise sur un jeton entrant. Par exemple, si SkewTime est 10, alors le jeton sera valide de (heure actuelle - 10) min à (heure actuelle + 10) min, c’est-à-dire 20 min en tout. Valeur par défaut : 5.
    • Groupe d’authentification par défaut : groupe ajouté à la liste groupée interne de session lorsque ce profil est choisi par IdP qui 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 pour identifier les flux nfacteurs liés à la partie se fiant à la confiance. Longueur maximale : 63

    Un groupe ajouté à la session pour ce profil afin de simplifier l’évaluation des stratégies et de faciliter la personnalisation des stratégies. Il s’agit du groupe par défaut qui est choisi lorsque l’authenticatiob réussit en plus des groupes extraits. Longueur maximale : 63

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

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

    • Nom — Nom de la stratégie d’authentification.
    • Action — Nom du profil créé ci-dessus.
    • Action du journal — Nom de l’action messagelog à utiliser lorsqu’une requête correspond à cette stratégie. Pas un dépôt obligatoire.
    • Undefined-Result Action – Action à réaliser si le résultat de l’évaluation des stratégies est undefined(UNDEF). Pas un champ obligatoire.
    • Expression : expression de syntaxe par défaut utilisée par la stratégie pour répondre à une demande spécifique. Par exemple, vrai.
    • Commentaires — Tout commentaire sur 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 AAA-Application > 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, 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.
    • DN de liaison administrateur : 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 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. Dans 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, vrai**.

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 (Preuve Key for Code Exchange)

  • Prise en charge de client_assertion

Pour configurer l’appliance Citrix ADC en tant qu’IdP à l’aide du protocole OIDC avec la 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 <>

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

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

L’appliance Citrix ADC avec le mécanisme OIDC prend désormais en charge l’envoi de jetons chiffrés avec des jetons signés. L’appliance Citrix ADC utilise les spécifications de chiffrement Web JSON pour calculer les jetons chiffrés et prend en charge uniquement la sérialisation compacte des jetons chiffrés. Pour chiffrer un jeton OpenID, une appliance Citrix ADC a besoin de la clé publique de la partie de confiance (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 <name> [-relyingPartyMetadataURL <URL>] [-refreshInterval <mins>] [-status < >]

  • RelyingPartyMetaDataurl - Point de terminaison sur lequel Citrix ADC IdP peut obtenir des détails sur la partie de confiance en cours de configuration. La réponse aux métadonnées doit inclure les points de terminaison pour jwks_uri pour les clés publiques RP.

  • RefreshInterval - Définit la vitesse à laquelle ce point de terminaison doit être interrogé pour mettre à jour les certificats en quelques minutes.

  • status - Reflète le statut de l’opération d’interrogation. L’état est terminé une fois que l’appliance Citrix ADC obtient les clés publiques.

    Exemple

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

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

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

Remarque : Seuls les algorithmes de type 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 se fiant à OpenID peuvent avoir besoin de plus d’un nom d’utilisateur ou d’un nom d’utilisateur principal (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 requis pour appliquer des stratégies d’autorisation pour l’utilisateur. Parfois, plus de détails, tels que le premier ou le nom de famille, sont nécessaires pour provisionner un compte d’utilisateur.

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

Appliance Citrix ADC JSONify automatiquement 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 multi-valeurs, 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>

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 : Vous pouvez configurer jusqu’à 2 000 octets d’attributs.

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 par rapport à 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”’. Le littéral de chaîne est entouré de guillemets doubles autour de guillemets simples ou doubles autour d’un début et d’un motif (comme indiqué précédemment, le motif 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 lors 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’ID.
  • Comme défini dans l’exemple, « false » est une chaîne littérale pour l’attribut « jit ». En outre, « ssn » a une valeur codée en dur pour référence. Les groupes et « myname » sont des expressions PI qui génèrent des chaînes.

Prise en charge des déploiements GSLB actif-actif 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 actif-actif. Le déploiement GSLB actif-actif sur Citrix Gateway IdP offre la possibilité 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 de l’installation de GSLB, reportez-vous à la section Exemple de configuration et de configuration GSLB.