Connecter un fournisseur OpenID Connect
Utilisez ce guide lorsque votre fournisseur d’identité parle OpenID Connect plutôt que SAML. Tout émetteur certifié OIDC convient — Pocket ID, Keycloak, Auth0, Zitadel, Google Workspace et bien d’autres suivent tous les mêmes étapes ; seul l’endroit où votre fournisseur affiche les valeurs diffère.
Prérequis
Section intitulée « Prérequis »- un fournisseur OIDC où vous pouvez créer un client — notez son ID client
et son URL de l’émetteur (la base sous laquelle vit le document
.well-known/openid-configuration), plus son secret client lorsque le client est de type confidentiel (les clients publics PKCE n’en ont pas), - un serveur Control Center que vous administrez (le propriétaire du serveur).
- Ouvrez Paramètres → Serveur → Authentification unique et basculez sur OpenID Connect.
- Renseignez l’URL de l’émetteur, l’ID client et le Secret client (facultatif) lorsque le fournisseur en a émis un. Control Center découvre les points de terminaison à partir du document de découverte standard de l’émetteur — aucune configuration propre à un fournisseur.
- Chez le fournisseur, enregistrez la redirection
https://<your-server>/oidc/callbacksur ce client. - Si vos groupes se trouvent sous un claim autre que
groups, définissez le nom du Claim des groupes ; faites correspondre les groupes à des rôles si vous le souhaitez (le SSO ne peut jamais accorder le rôle de propriétaire). - Choisissez la politique d’adhésion (ajout automatique à chaque espace de travail, ou invitation obligatoire par espace de travail), activez Utiliser OpenID Connect pour la connexion et cliquez sur Enregistrer la connexion.
- Cliquez sur Tester la connexion — le serveur récupère le document de découverte de l’émetteur et confirme ses points de terminaison ; une notification verte signifie donc que tout fonctionne, hormis l’aller-retour dans le navigateur. Pour vérifier aussi l’enregistrement du client, utilisez le vérificateur ci-dessous.
- Effectuez une connexion : l’écran de connexion web affiche Se connecter
avec OpenID Connect, ou ouvrez directement
https://<your-server>/oidc/login.
Les claims (adresse e-mail, nom, groupes) sont lus sur le point de terminaison
de jeton de l’émetteur via TLS par votre serveur — le navigateur ne les fournit
jamais, si bien qu’aucune vérification locale de signature JWT n’entre en jeu.
Le client doit être autorisé à demander le scope openid profile email, ce qui
correspond exactement à ce que demande Control Center.
Comme ce canal TLS est le seul élément qui authentifie les claims, l’URL de
l’émetteur doit être en https — un émetteur en clair permettrait à
n’importe quel attaquant en position intermédiaire de forger des identités en
masse. http n’est accepté que pour les émetteurs en bouclage (localhost,
127.0.0.1, ::1), et uniquement pour le développement local.
Vérifier votre configuration depuis cette page
Section intitulée « Vérifier votre configuration depuis cette page »Le vérificateur ci-dessous s’exécute dans votre navigateur. Il récupère directement le document de découverte de votre émetteur, que ce site ne voit donc jamais, et applique les règles du serveur : un émetteur https qui correspond au document, des points de terminaison sur l’origine propre de l’émetteur, PKCE S256 et la méthode d’authentification de jeton requise par votre type de client. Avec un ID client et l’adresse du serveur, il peut ouvrir une connexion de test qui indique si le client et son URI de redirection sont enregistrés. Il ne demande jamais le secret client.
Runs in your browserYour browser fetches the discovery document straight from your issuer. Add a server address and it also asks that server which sign-in methods it offers. This site never receives what you type.
Test sign-in at your provider
- Your provider's sign-in or consent page: the client ID and redirect URI are registered. You can close the tab.
- An error at your provider: it names what to fix, usually a redirect URI that is not registered or an unknown client ID.
- Your server's "Sign-in failed" page: also a pass. The provider accepted the request and sent you back; your server refuses it only because this page started the sign-in, not your server.