NetScaler en tant qu’IdP OAuth
Une appliance NetScaler peut désormais être configurée 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 l’appliance NetScaler. 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 ultérieure pour que l’appliance fonctionne 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 interopérabilité étendue avec divers systèmes, ce qui facilite l’acceptation d’OpenID par les applications hébergées.
Remarque
NetScaler Advanced Edition ou version ultérieure est requis pour que la solution fonctionne.
Pour configurer l’appliance NetScaler en tant qu’IdP OAuth à l’aide de l’interface graphique
-
Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > IdP OAuth.
-
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 en utilisant 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.
- Temps d’inclinaison : cette option spécifie le décalage d’horloge autorisé en minutes par NetScaler 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 la session lorsque ce profil est choisi par l’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 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.
-
-
Cliquez sur Stratégies et cliquez sur Ajouter.
-
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.
- Nom : nom de la stratégie d’authentification.
- Action : nom du profil créé précédemment.
- Action du journal : 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 de stratégie avancée 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
-
Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > Actions > LDAP.
-
Dans l’écran Actions LDAP, cliquez sur Ajouter.
-
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’option 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.
-
Accédez à Configuration > Sécurité > Trafic des applications AAA > Stratégies > Authentification > Stratégies avancées > Stratégie.
-
Dans l’écran Stratégies d’authentification, cliquez sur Ajouter.
-
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 politique avancée que la politique utilise 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 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 l’appliance NetScaler en tant qu’IdP à l’aide du protocole OIDC à l’aide de la CLI
À 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)
.Le point de terminaison introspectif OAuth IdP prend en charge la propriété
active: true
.
Prise en charge des jetons cryptés sur le protocole OIDC
L’appliance NetScaler dotée du mécanisme OIDC prend désormais en charge l’envoi de jetons chiffrés ainsi que de jetons signés. L’appliance NetScaler utilise les spécifications de chiffrement Web JSON pour calculer les jetons chiffrés et prend uniquement en charge la sérialisation compacte des jetons cryptés. Pour crypter un jeton OpenID, une appliance NetScaler a besoin de la clé publique de la partie dépendante (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 commande, tapez :
```set authentication OAuthIDPProfile
- **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. L'état est terminé une fois que l'appliance 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é, une appliance NetScaler interroge d’abord le point de terminaison connu de la partie dépendante pour lire la configuration. Actuellement, l’appliance 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.
L’appliance NetScaler configurée en tant qu’IdP peut être utilisée pour envoyer des attributs supplémentaires dans le jeton 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.
L’appliance NetScaler enregistre automatiquement JSONify
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 final de la partie de confiance à l’aide de l’interface
À l’invite de commande, 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 : 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 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”’. Le littéral de chaîne est entouré de guillemets doubles autour de guillemets simples ou de guillemets doubles autour d’un début et d’un motif (comme indiqué précédemment, 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
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 la configuration de GSLB, voir Exemple de configuration et de configuration GSLB.