Passer au contenu principal

Nginx

Activez la connexion unique basée sur OpenID Connect pour les applications proxifiées par NGINX Plus en utilisant Casdoor comme fournisseur d'identité (IdP).

Ce guide explique comment activer la connexion unique (SSO) pour les applications qui sont proxifiées par NGINX Plus. La solution utilise OpenID Connect comme mécanisme d'authentification, avec Casdoor comme fournisseur d'identité (IdP), et NGINX Plus comme partie de confiance.

Voir aussi : Vous pouvez trouver plus d'informations sur l'intégration OpenID Connect de NGINX Plus dans le répertoire GitHub du projet.

Prérequis

Les instructions supposent que vous disposez des éléments suivants :

  • Un serveur Casdoor en fonctionnement. Reportez-vous à la documentation de Casdoor pour l'Installation du Serveur et Essayer avec Docker.

  • Un abonnement NGINX Plus et NGINX Plus R15 ou ultérieur. Pour les instructions d'installation, consultez le Guide d'administration NGINX Plus.

  • Le module JavaScript NGINX, qui est requis pour gérer l'interaction entre NGINX Plus et l'IdP. Après avoir installé NGINX Plus, installez le module en utilisant la commande appropriée pour votre système d'exploitation.

    Pour Debian et Ubuntu :

    sudo apt install nginx-plus-module-njs

    Pour CentOS, RHEL et Oracle Linux :

    sudo yum install nginx-plus-module-njs
  • La directive suivante doit être incluse dans le contexte de configuration de niveau supérieur ("main") dans /etc/nginx/nginx.conf afin de charger le module JavaScript NGINX :

    load_module modules/ngx_http_js_module.so;

Configuration de Casdoor

Note : La procédure suivante reflète l'interface utilisateur de Casdoor au moment de la publication, mais l'interface utilisateur est susceptible de changer. Utilisez ce guide comme référence et adaptez-le à l'interface utilisateur actuelle de Casdoor si nécessaire.

Pour créer un client Casdoor pour NGINX Plus dans l'interface utilisateur de Casdoor, suivez ces étapes :

  1. Connectez-vous à votre compte Casdoor sur http://your-casdoor-url.com/login/.

  2. Dans la colonne de navigation supérieure, cliquez sur Application. Sur la page Application qui s'ouvre, cliquez sur le bouton Ajouter dans le coin supérieur gauche.

    addApp

  3. Sur la page Modifier l'Application qui s'ouvre, changez la valeur dans les champs Nom et Nom d'affichage pour le nom de l'application pour laquelle vous activez le SSO. Ici, nous utilisons NGINX Plus.

    appName

    Dans le champ URLs de redirection, tapez l'URL de l'instance NGINX Plus incluant le numéro de port, et se terminant par /_codexch (dans ce guide, c'est https://your-site-url.com:443/_codexch).

    redirectURL

    Notes :

    • Pour la production, nous recommandons fortement d'utiliser SSL/TLS (port 443).
    • Le numéro de port est obligatoire même lorsque vous utilisez le port par défaut pour HTTP (80) ou HTTPS (443).
  4. Notez les valeurs dans les champs ID Client et Secret Client. Vous les copierez dans le fichier de configuration NGINX Plus dans l'étape 4 de Configuration de NGINX Plus.

    Client

  5. Cliquez sur Rôles dans la colonne de navigation supérieure, puis cliquez sur le bouton Ajouter dans le coin supérieur gauche de la page qui s'ouvre.

    addRole

  6. Sur la page Ajouter qui s'ouvre, tapez une valeur dans les champs Nom et Nom d'affichage (ici c'est nginx-casdoor-role) et cliquez sur le bouton Enregistrer.

    roleName

  7. Dans la colonne de navigation supérieure, cliquez sur Utilisateurs. Sur la page Utilisateurs qui s'ouvre, cliquez soit sur Modifier pour éditer l'un des utilisateurs existants, soit sur le bouton Ajouter dans le coin supérieur gauche pour créer un nouvel utilisateur.

  8. Sur la page Ajouter qui s'ouvre, modifiez les champs Nom et Nom d'affichage comme vous le souhaitez (ici c'est user1).

    userName

    Sélectionnez NGINX Plus dans le Application d'inscription.

    signupApp

    Dans le champ Comptes gérés, sélectionnez NGINX Plus dans Application et remplissez le nom d'utilisateur et le mot de passe.

    managedAcc

  9. Retournez à la page Rôles et cliquez sur Modifier sur la ligne nginx-casdoor-role. Dans la page qui s'ouvre, dans le champ Sous-utilisateurs, sélectionnez le nom d'utilisateur que vous venez de créer (ici c'est built-in/user1).

    subUsers

Configuration de NGINX Plus

Pour configurer NGINX Plus en tant que partie de confiance OpenID Connect, suivez ces étapes :

  1. Commencez par créer un clone du répertoire GitHub nginx-openid-connect :

    git clone https://github.com/nginxinc/nginx-openid-connect
  2. Copiez les fichiers suivants du clone dans le répertoire /etc/nginx/conf.d :

    • frontend.conf
    • openid_connect.js
    • openid_connect.server_conf
    • openid_connect_configuration.conf
  3. Récupérez les URL pour le point de terminaison d'autorisation, le point de terminaison de jeton et le fichier JSON Web Key (JWK) à partir de la configuration de Casdoor. Ouvrez un terminal et exécutez la commande curl suivante, en dirigeant la sortie vers la commande python indiquée pour générer un format de configuration lisible. Par souci de concision, nous avons tronqué la sortie pour afficher uniquement les champs pertinents.

    curl http://<casdoor-server-address>/.well-known/openid-configuration | python -m json.tool
  4. Ouvrez /etc/nginx/conf.d/openid_connect_configuration.conf avec votre éditeur de texte préféré. Modifiez la valeur du paramètre "default" pour chacune des directives map suivantes avec les valeurs spécifiées :

    • map $host $oidc_authz_endpoint – Utilisez la valeur de authorization_endpoint de l'étape 3 (dans ce guide, https://<casdoor-server-address>/login/oauth/authorize)
    • map $host $oidc_token_endpoint – Utilisez la valeur de token_endpoint de l'étape 3 (dans ce guide, http://<casdoor-server-address>/api/login/oauth/access_token)
    • map $host $oidc_client – Utilisez la valeur dans le champ ID Client de l'étape 4 de Configuration de Casdoor
    • map $host $oidc_client_secret – Utilisez la valeur dans le champ Secret Client de l'étape 2 de Configuration de Casdoor
    • map $host $oidc_hmac_key – Utilisez une phrase unique, longue et sécurisée
  5. Configurez le fichier JWK en fonction de la version de NGINX Plus utilisée :

    • Dans NGINX Plus R17 et ultérieur, NGINX Plus peut lire directement le fichier JWK à partir de l'URL spécifiée comme jwks_uri dans l'étape 3. Apportez les modifications suivantes à /etc/nginx/conf.d/frontend.conf :
      1. Commentez (ou supprimez) la directive auth_jwt_key_file.
      2. Décommentez la directive auth_jwt_key_request. (Le paramètre /_jwks_uri fait référence à la valeur de la variable $oidc_jwt_keyfile, qui sera définie à l'étape suivante.)
      3. Mettez à jour le paramètre "default" de la directive map $host $oidc_jwt_keyfile avec la valeur obtenue du champ jwks_uri dans l'étape 3 (dans ce guide, http://<casdoor-server-address>/.well-known/jwks).
    • Dans NGINX Plus R16 et antérieur, ou si préféré, le fichier JWK doit être situé sur le disque local. Suivez ces étapes :
      1. Copiez le contenu JSON du fichier JWK spécifié dans le champ jwks_uri dans l'étape 3 (dans ce guide, http://<casdoor-server-address>/.well-known/jwks) dans un fichier local (par exemple, /etc/nginx/my_casdoor_jwk.json).
      2. Dans /etc/nginx/conf.d/openid_connect_configuration.conf, changez le paramètre "default" de la directive map $host $oidc_jwt_keyfile avec le chemin du fichier local.
  6. Assurez-vous que l'utilisateur spécifié dans la directive user dans le fichier de configuration de NGINX Plus (généralement /etc/nginx/nginx.conf) a les permissions de lecture pour le fichier JWK.

Tests

Ouvrez un navigateur et entrez l'adresse de votre instance NGINX Plus. Ensuite, essayez de vous connecter en utilisant les identifiants d'un utilisateur qui a été assigné au rôle NGINX Plus.

test

Dépannage

Veuillez vous référer à la section Dépannage dans le répertoire nginx-openid-connect sur GitHub.