ADC

NetScaler en tant qu’IdP OAuth

NetScaler 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 NetScaler en matière de fourniture d’identité. 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

NetScaler 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 l’utilisation de NetScaler en tant qu’IdP 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 vaste interopérabilité avec différents systèmes, ce qui permet aux applications hébergées d’accepter plus facilement OpenID.

Remarque

NetScaler Advanced Edition ou version ultérieure est requis pour que la solution fonctionne.

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

  1. Créez une stratégie d’authentification OAuth IdP.

    • Accédez à Sécurité > AAA - Trafic des applications > Stratégies > Authentification > Stratégies avancées > OAuth IDP > Stratégies.
    • Sous Stratégies, cliquez sur Ajouter.
    • Sur la page Créer une stratégie d’authentification OAuth IDP, définissez les valeurs des paramètres suivants et cliquez sur Créer.

      • Nom : nom de la stratégie d’authentification.
      • Action : nom du profil d’authentification OAuth IdP à appliquer aux demandes ou connexions qui correspondent à cette stratégie. Reportez-vous à l’étape 2 pour les étapes détaillées.
      • Action du journal : nom de l’action du journal des messages à utiliser lorsqu’une demande correspond à cette stratégie. Voir l’étape 3 pour les étapes détaillées. Ce champ est facultatif.
      • Action à résultat indéfini : action à effectuer si le résultat de l’évaluation de la stratégie n’est pas défini. Un événement non défini indique une condition d’erreur interne. Les actions disponibles sont DROP et RESET. Ce champ est facultatif.
      • Expression : expression avancée utilisée par la stratégie pour répondre à des demandes spécifiques. Pour plus d’informations sur les stratégies et les expressions, consultez la section Stratégies et expressions.
  2. Créez une action d’authentification OAuth IdP.

    • Sur la page Créer une stratégie d’authentification OAuth IDP, cliquez sur Ajouter dans le champ Action.
    • Sur la page Create Authentication OAuth IDP Profile qui apparaît, définissez les valeurs des paramètres suivants et cliquez surCréer.

      • Nom : nom du nouveau profil d’authentification unique OAuth IdP.
      • ID client : identité unique de la partie utilisatrice demandant l’authentification. La longueur maximale autorisée est de 127 caractères.
      • Secret du client : chaîne secrète unique pour autoriser la partie utilisatrice sur le serveur d’autorisation. La longueur maximale autorisée est de 239 caractères.
      • URL de redirection : point de terminaison URL de la partie utilisatrice auquel le jeton OAuth doit être envoyé. La longueur maximale autorisée est de 255 caractères.
      • Nom de l’émetteur : nom à utiliser dans les demandes envoyées par NetScaler à l’IdP pour identifier NetScaler de manière unique. La longueur maximale autorisée est de 127 caractères.
      • Public cible : destinataire du jeton envoyé par l’IdP. Il s’agit du nom de l’entité ou de l’URL qui représente le destinataire. La longueur maximale autorisée est de 127 caractères.
      • Skew Time : cette option indique la durée de validité du jeton envoyé par l’IdP NetScaler. Par exemple, si le temps d’inclinaison est défini sur 10 minutes, le jeton sera valide de (heure actuelle moins 10) minutes à (heure actuelle plus 10) minutes, soit 20 minutes au total. La durée par défaut est de 5 minutes.
      • Groupe d’authentification par défaut : groupe ajouté à la liste interne des groupes de la session. Cela est utile aux administrateurs pour déterminer la configuration de la partie utilisatrice dans un flux nFactor. Il peut être utilisé dans l’expression AAA.USER.IS_MEMBER_OF("group name") des stratégies d’authentification afin d’identifier le flux nFactor lié à la partie utilisatrice. La longueur maximale autorisée est de 63 caractères.
      • URL des métadonnées de la partie utilisatrice : point de terminaison où l’IdP NetScaler peut obtenir des informations sur la partie utilisatrice 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 de la partie utilisatrice. La longueur maximale autorisée est de 255 caractères.
      • Intervalle d’actualisation : intervalles auxquels les métadonnées de la partie utilisatrice sont actualisées.
      • Service de signature : sélectionnez cette option pour chiffrer le jeton lorsque l’IdP NetScaler en envoie un.
      • Attributs : paires nom-valeur d’attributs à insérer dans le jeton d’identification. Le format de configuration est name=value_expr@@@name2=value2_expr@@@. Le @@@ format est utilisé comme séparateur entre les paires nom-valeur.
      • Envoyer le mot de passe : sélectionnez cette option pour envoyer le mot de passe chiffré dans le jeton d’identification.
  3. Créez une action de message d’audit.
    • Sur la page Créer une stratégie d’authentification OAuth IDP , cliquez sur Ajouter dans le champ Log Action.
    • Sur la page Créer une action de message d’audit, définissez les valeurs des paramètres suivants et cliquez sur Créer.
      • Nom : nom de l’action du message d’audit.
      • Niveau de journal : niveau du journal d’audit, qui indique le niveau de gravité du message de journal généré.
      • Expression : expression de syntaxe par défaut qui définit le format et le contenu du message du journal.
      • Login newnslog : envoie le message au nouveau serveur NSLOG.
  4. Créez un serveur d’authentification OAuth.

    • Accédez à Sécurité > AAA - Trafic des applications > Stratégies > Authentification > Stratégies avancées > Actions > Actions OAUTH et cliquez sur Ajouter.
    • Sur la page Créer un serveur OAuth d’authentification, définissez les valeurs des paramètres requis et cliquez sur Créer.
  5. Liez la stratégie OAuth IdP au serveur d’authentification OAuth.

La fonctionnalité OAuth prend désormais en charge les fonctionnalités suivantes dans l’API des jetons du côté de la partie dépendante (RP) et du côté IdP de NetScaler Gateway et NetScaler.

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

  • Prise en charge de client_assertion

Pour configurer NetScaler 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-->

Remarques :

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

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

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

NetScaler 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. NetScaler 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, NetScaler 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 final de la partie de confiance à l’aide de l’interface

À l’invite de commandes, tapez :

set authentication OAuthIDPProfile <name> [-relyingPartyMetadataURL <URL>] [-refreshInterval <mins>] [-status < >]
<!--NeedCopy-->
  • RelyingPartyMetadataURL  : point de terminaison auquel NetScaler IdP peut obtenir des informations 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. Le statut est terminé une fois que NetScaler 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é, NetScaler interroge d’abord le point de terminaison connu de la partie utilisatrice pour lire la configuration. Actuellement, NetScaler 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, NetScaler interroge également ce point de terminaison pour lire les clés publiques de l’utilisateur.

Remarque :

Seuls les algorithmes de type de cryptage RSAES-OAEP et AES256 GCM sont pris en charge pour le cryptage des jetons.

Prise en charge des attributs personnalisés sur OpenID Connect

Les parties utilisatrices OpenID peuvent avoir besoin de plus qu’un nom d’utilisateur ou 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 tenus d’appliquer des stratégies d’autorisation pour l’utilisateur. Parfois, des détails supplémentaires, tels que le prénom ou le nom de famille, sont nécessaires pour provisionner un compte d’utilisateur.

NetScaler 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 NetScaler OAuth évalue les expressions correspondant aux attributs, puis calcule le jeton final.

NetScaler applique automatiquement JSONify aux 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 final de la partie de confiance à l’aide de l’interface

À 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 jeton d’identification.

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” 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 de caractères.

Support pour les déploiements GSLB actifs-actifs sur NetScaler Gateway

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

Important

Nous vous recommandons de lier les certificats CA au service SSL et d’activer la validation des certificats sur le service SSL pour renforcer la sécurité. Pour plus d’informations sur la configuration d’une configuration GSLB, voir Exemple d’installation et de configuration GSLB.

NetScaler en tant qu’IdP OAuth