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 👋.
SAML#
Configuration pour SAML, utile pour les connexions d’entreprise à authentification unique (SSO). Un bon aperçu informatif de SAML est disponible sur https://www.okta.com/integrate/documentation/saml/
Note :
- SP est “Service Provider” (Fournisseur de Service), dans notre cas, l’application Grist.
- IdP est “Identity Provider” (Fournisseur d’Identité), un endroit où les utilisateurs se connectent, par exemple Okta ou Google Apps.
Nous aurons besoin d’un ou plusieurs certificats de l’IdP, au format PEM. Il s’agit d’une clé publique que Grist utilisera pour vérifier que les messages de l’IdP sont légitimes.
Nous aurons besoin d’une paire de clés privée et publique pour que Grist puisse communiquer avec l’IdP. L’IdP devra connaître la clé publique de Grist pour vérifier que les messages de Grist sont légitimes.
Variables d’environnement attendues :
GRIST_SAML_SP_HOST
- c’est simplement l’URL de base du site Grist, commehttps://<grist-domain>
(lorsque SAML est actif, il y aura une endpoint/saml/assert
disponible ici pour implémenter le protocole).GRIST_SAML_SP_KEY
- chemin vers un fichier contenant notre clé privée, au format PEM. C’est la clé privée de la paire de clés créée pour que Grist l’utilise avec l’IdP.GRIST_SAML_SP_CERT
- chemin vers un fichier contenant notre clé publique, au format PEM. C’est la clé publique de la paire de clés créée pour que Grist l’utilise avec l’IdP. Ce n’est pas la clé publique/certificat de l’IdP.GRIST_SAML_IDP_LOGIN
- URL de connexion pour rediriger l’utilisateur pour la connexion.GRIST_SAML_IDP_LOGOUT
- URL de déconnexion pour rediriger l’utilisateur pour la déconnexion.GRIST_SAML_IDP_SKIP_SLO
- si défini et non vide, ne pas tenter le flux “Single Logout” SAML, mais simplement rediriger versGRIST_SAML_IDP_LOGOUT
après avoir effacé la session. La possibilité de ce flux dépendra de l’IdP.GRIST_SAML_IDP_CERTS
- liste de chemins séparés par des virgules pour les certificats de l’IdP, au format PEM. Ce n’est pas la clé privée ou publique créée pour Grist.GRIST_SAML_IDP_UNENCRYPTED
- si défini et non vide, autoriser les assertions non chiffrées, en s’appuyant sur https pour la confidentialité.
Exemple : Auth0#
Par exemple, lors de l’exécution en local et en http, les paramètres qui fonctionnent avec l’IdP SAML Auth0 sont :
GRIST_SAML_IDP_SKIP_SLO
non définiGRIST_SAML_SP_HOST
=http://localhost:8484
GRIST_SAML_IDP_UNENCRYPTED
=1
GRIST_SAML_IDP_LOGIN
=https://...auth0.com/samlp/xxxx
GRIST_SAML_IDP_LOGOUT
=https://...auth0.com/samlp/xxxx
(ce sont les mêmes pour Auth0)GRIST_SAML_IDP_CERTS
=.../auth0.pem
(téléchargé selon les instructions d’Auth0)GRIST_SAML_SP_KEY
=.../saml.pem
(créé)GRIST_SAML_SP_CERT
=.../saml.crt
(créé)
Lorsqu’il est utilisé avec docker, assurez-vous que les fichiers de clé et de certificat sont accessibles dans un volume partagé. La paire clé/certificat a été créée en suivant les instructions ici :
- Auth0 : utiliser un certificat personnalisé pour signer les requêtes
- Auth0 en tant que fournisseur d’identité SAML
Dans vos paramètres Auth0, assurez-vous également que :
- L’URL de rappel de l’application est définie sur
https://<grist-domain>/saml/assert
.
Exemple : Authentik#
Dans Authentik, ajoutez un fournisseur appelé Grist
avec :
- URL ACS :
https://<grist-domain>/saml/assert
- Définir la liaison du fournisseur de services sur
Post
- Sélectionnez ou ajoutez un certificat de signature. Vous devrez le télécharger pour l’utiliser comme
GRIST_SAML_IDP_CERTS
dans la configuration de Grist. - Ajoutez un certificat de vérification. Ce sera la partie publique d’une paire de clés que vous créez pour
GRIST_SAML_SP_KEY
/GRIST_SAML_SP_CERT
dans la configuration de Grist.
Ensuite, toujours dans Authentik, ajoutez une application également appelée Grist
(je ne suis pas très imaginatif) qui :
- Utilise le fournisseur
Grist
. - A
Launch URL
défini surhttps://<grist-domain>
.
Les paramètres de Grist suivent le même schéma que pour Auth0. Les URL de connexion et de déconnexion avec Authentik au moment de la rédaction ressemblent à :
GRIST_SAML_IDP_LOGIN
=https://...authentik.../application/saml/grist/sso/binding/redirect/
GRIST_SAML_IDP_LOGOUT
=https://...authentik.../if/session-end/grist/
Exemple : Google#
Dans Google Admin, sous la section “Apps”, dans “Web and Mobile Apps”, ajoutez une nouvelle application SAML personnalisée.
Définissez le nom de l’application, la description et l’icône à votre convenance, puis cliquez sur Suivant.
Prenez note du contenu du champ SSO URL
, et téléchargez le certificat fourni.
Configurez l’application dans Google Admin comme suit :
- URL ACS :
https://<grist-domain>/saml/assert
- ID d’entité :
https://<grist-domain>/saml/metadata.xml
- Cochez la case Réponse signée.
- Laissez
Start URL
vide, et les paramètresName ID
par défaut.
Cliquez sur Suivant, et éventuellement, sous Attributs, ajoutez deux mappages pour la population automatique des noms :
- Attribut de l’annuaire Google
First Name
défini sur l’attribut de l’applicationFirstName
- Attribut de l’annuaire Google
Last Name
défini sur l’attribut de l’applicationLastName
Puis cliquez sur Terminer, et configurez les paramètres de Grist :
GRIST_SAML_IDP_SKIP_SLO
=true
GRIST_SAML_SP_HOST
=https://<grist-domain>
GRIST_SAML_IDP_UNENCRYPTED
=true
GRIST_SAML_IDP_LOGIN
=https://accounts.google.com/o/saml2/idp?idpid=xxxx
(fourni par Google commeSSO URL
)GRIST_SAML_IDP_LOGOUT
=https://<grist-domain>
(puisque Google ne prend pas en charge Single Logout, renvoyez simplement l’utilisateur à la page d’accueil)GRIST_SAML_IDP_CERTS
=.../google.pem
(fourni par Google plus tôt)GRIST_SAML_SP_KEY
=.../saml.pem
GRIST_SAML_SP_CERT
=.../saml.crt
Pour créer la paire de clés utilisée dans GRIST_SAML_SP_KEY
et GRIST_SAML_SP_CERT
, suivez les mêmes instructions que pour Auth0 et Authentik.
Note : Google ne vérifie pas les messages SAML entrants, ils ne permettent donc pas de télécharger une clé publique à cette fin.
Dépannage#
Nous nous attendons à ce que l’IdP nous fournisse name_id, un identifiant unique pour l’utilisateur. Nous utilisons également des attributs optionnels pour le nom de l’utilisateur, pour lesquels nous acceptons n’importe lequel de :
- FirstName
- LastName
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
Vous devrez peut-être ajuster les paramètres par défaut de votre IdP pour correspondre aux attentes de Grist.