Warning
La traduction proposée ici a été générée automatiquement par le modèle d’intelligence artificielle GPT-4o. Il est probable qu’elle contienne des imperfections.
Mais la bonne nouvelle est que vous pouvez rejoindre la communauté de traduction pour améliorer le contenu fourni ici 👋.
OpenID Connect#
Configuration pour OIDC, utile pour les connexions single-sign-on des organisations. Un bon aperçu informatif de l’OIDC est disponible sur https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc
Remarque :
- SP est le “Fournisseur de Services”, dans notre cas, l’application Grist.
- IdP est le “Fournisseur d’Identité”, là où les utilisateurs se connectent, par exemple Keycloak, Authelia, …
- OIDC est l’acronyme pour OpenID Connect
Variables d’environnement attendues :
GRIST_OIDC_IDP_ISSUER
- l’URL de l’émetteur pour l’IdP, passé à node-openid-client, voir : https://github.com/panva/node-openid-client/blob/a84d022f195f82ca1c97f8f6b2567ebcef8738c3/docs/README.md#issuerdiscoverissuer. Cette variable active le système de connexion OIDC.GRIST_OIDC_IDP_CLIENT_ID
- l’ID client pour l’application, tel qu’enregistré auprès de l’IdP.GRIST_OIDC_IDP_CLIENT_SECRET
- le secret client pour l’application, tel qu’enregistré auprès de l’IdP.GRIST_OIDC_IDP_SCOPES
(optionnel) - les scopes à demander à l’IdP, sous forme de liste séparée par des espaces. Par défaut"openid email profile"
.GRIST_OIDC_SP_HOST
(optionnel) - il s’agit simplement de l’URL de base du site Grist, tel quehttps://<grist-domain>
(lorsque OIDC est actif, il y aura un point de terminaison/oauth2/callback
disponible ici pour implémenter le protocole). Si omis,APP_HOME_URL
sera utilisé.GRIST_OIDC_IDP_END_SESSION_ENDPOINT
(optionnel) - Si défini, remplace leend_session_endpoint
de l’IdP par une URL alternative pour rediriger l’utilisateur lors de la déconnexion (pour un IdP qui a un point de terminaison de déconnexion mais ne supporte pas la spécification OIDC RP-Initiated Logout).GRIST_OIDC_IDP_SKIP_END_SESSION_ENDPOINT
(optionnel) - Si défini sur “true”, lors de la déconnexion, il n’y aura aucune tentative d’appeler leend_session_endpoint
de l’IdP (l’utilisateur restera connecté à l’IdP). Vous ne devez le définir sur “true” que si l’IdP ne fournit pas un tel point de terminaison (par exemple si vous utilisez Gitlab).GRIST_OIDC_SP_PROFILE_NAME_ATTR
(optionnel) - La clé de la propriété d’utilisateur à utiliser pour le nom de l’utilisateur. Si omis, le nom sera la concaténation degiven_name
+family_name
s’ils sont fournis ou la propriéténame
sinon.GRIST_OIDC_SP_PROFILE_EMAIL_ATTR
(optionnel) - La clé de la propriété d’utilisateur à utiliser pour l’email de l’utilisateur. Par défaut “email”.GRIST_OIDC_IDP_ENABLED_PROTECTIONS
(optionnel) - Une liste séparée par des virgules des protections à activer. Les valeurs prises en charge sontPKCE
,STATE
,NONCE
. Par défautPKCE,STATE
, qui sont les paramètres recommandés. Il est fortement recommandé d’activerSTATE
, et au moins l’un dePKCE
ouNONCE
, selon ce que votre fournisseur OIDC requiert/supporte.GRIST_OIDC_IDP_ACR_VALUES
(optionnel) - Une liste séparée par des espaces des valeurs ACR à demander à l’IdP.GRIST_OIDC_IDP_EXTRA_CLIENT_METADATA
(optionnel) - Un objet JSON avec des métadonnées client supplémentaires à passer à openid-client. Sachez que la définition de cet objet peut remplacer toutes les autres valeurs passées au client openid. Plus d’infos : https://github.com/panva/node-openid-client/tree/main/docs#new-clientmetadata-jwks-options
Exemple : Gitlab#
Voir comment créer une application OAuth2 dans Gitlab dans cette documentation. Lors de la création de l’application, définissez l’URI de redirection sur https://<grist-domain>/oauth2/callback
(ou http://localhost:8484/oauth2/callback
si testé localement, changez 8484
pour le port que vous écoutez) et sélectionnez les scopes que vous spécifierez dans GRIST_OIDC_IDP_SCOPES
.
Une fois l’application configurée, démarrez Grist avec ces paramètres :
GRIST_OIDC_SP_HOST=https://<grist-domain> # ou http://localhost:8484
GRIST_OIDC_IDP_ISSUER=https://gitlab.com/.well-known/openid-configuration
GRIST_OIDC_IDP_SCOPES=openid profile email
# l'ID client généré par Gitlab pour l'application
GRIST_OIDC_IDP_CLIENT_ID=...
# le secret client généré par Gitlab pour l'application
GRIST_OIDC_IDP_CLIENT_SECRET=...
# Gitlab ne propose pas `end_session_endpoint`
GRIST_OIDC_IDP_SKIP_END_SESSION_ENDPOINT=true
Ce format est adapté pour un fichier .env
ou similaire. Lors d’une invocation shell, n’oubliez pas de citer les valeurs avec des espaces, comme GRIST_OIDC_IDP_SCOPES="openid profile email"
.
Exemple : Auth0#
Créez une application dans Auth0 comme expliqué dans cette documentation (vous pouvez sélectionner le type d’application nommé Regular Web Applications
). Une fois l’application créée, assurez-vous d’ajouter au moins la configuration suivante pour l’application :
- URL de rappel autorisées :
https://<grist-domain>/oauth2/callback
- URL de déconnexion autorisées :
http://<grist-domain>/*
(vous pouvez également remplacer le caractère générique par le chemin complet pour être plus strict)
Ensuite, vous devriez pouvoir démarrer Grist avec les paramètres suivants :
GRIST_OIDC_SP_HOST=https://<grist-domain> # ou http://localhost:8484
GRIST_OIDC_IDP_ISSUER=https://<your-auth0-app-domain>
GRIST_OIDC_IDP_SCOPES=openid profile email
# l'ID client généré par Auth0 pour l'application
GRIST_OIDC_IDP_CLIENT_ID=...
# le secret client généré par Auth0 pour l'application
GRIST_OIDC_IDP_CLIENT_SECRET=...
Ce format est adapté pour un fichier .env
ou similaire. Lors d’une invocation shell, n’oubliez pas de citer les valeurs avec des espaces, comme GRIST_OIDC_IDP_SCOPES="openid profile email"
.
Exemple : Keycloak#
Tout d’abord, configurez Keycloak comme expliqué dans l’un de ces guides “Getting started” : https://www.keycloak.org/guides#getting-started.
Une fois Keycloak configuré avec un domaine et un utilisateur, créez un nouveau client avec la configuration suivante :
- Type de client : OpenID Connect
- Flux d’authentification : Flux standard
- URL racine :
https://<grist-domain>
- URI de redirection valides :
/oauth2/callback
- URI de redirection post-déconnexion valides :
/*
(vous pouvez également remplacer le caractère générique par le chemin complet pour être plus strict)
Soumettez vos paramètres et allez à l’onglet Credentials pour récupérer le secret client.
Ensuite, vous pouvez démarrer Grist avec la configuration suivante :
GRIST_OIDC_SP_HOST=https://<grist-domain> # ou http://localhost:8484
GRIST_OIDC_IDP_ISSUER=https://<keycloak-domain>/realms/<your-realm>
GRIST_OIDC_IDP_SCOPES=openid profile email
# l'ID que vous avez choisi pour le client Keycloak
GRIST_OIDC_IDP_CLIENT_ID=...
# le secret client généré par Keycloak récupéré précédemment
GRIST_OIDC_IDP_CLIENT_SECRET=...
Ce format est adapté pour un fichier .env
ou similaire. Lors d’une invocation shell, n’oubliez pas de citer les valeurs avec des espaces, comme GRIST_OIDC_IDP_SCOPES="openid profile email"
.