Découvrez comment OpenID Connect améliore l'authentification en s'appuyant sur le protocole OAuth 2.0 pour fournir un moyen sécurisé et standard d'authentifier les utilisateurs.
Table des matières
- Qu'est-ce qu'OpenID Connect?
- Comment OIDC fonctionne
- OIDC contre OAuth 2.0
- Avantages de OIDC
- Jetons d'identification expliqués
- Mise en œuvre de l'OIDC
- Considérations de sécurité
- Troubleshooting
- Glossaire
Qu'est-ce qu'OpenID Connect?
OpenID Connect (OIDC) est une couche d'identité construite sur le protocole OAuth 2.0. Il permet aux clients (comme Esadax) de vérifier l'identité des utilisateurs en fonction de l'authentification effectuée par un serveur d'autorisation.
- Développé par la Fondation OpenID.
- Largement adopté dans les applications Web et mobiles modernes.
- Utilisé par Google, Microsoft, Auth0, Okta, etc.
Comment OIDC fonctionne
- L'utilisateur tente de se connecter sur l'application cliente.
- Le client redirige l'utilisateur vers le fournisseur d'identité (IdP).
- L'utilisateur s'authentifie auprès de l'IdP (par exemple, nom d'utilisateur + mot de passe, 2FA).
- L'IdP redirige vers le client avec un jeton d'identification et (en option) un jeton d'accès.
- Le client vérifie la signature et les revendications du jeton d’identification.
- L'utilisateur est authentifié et une session est créée.
OIDC contre OAuth 2.0
| Caractéristique |
OAuth 2.0 |
Connexion OpenID (OIDC) |
| Objet |
Autorisation |
Authentification |
| Type de jeton |
Jeton d'accès |
Jeton d'identification + jeton d'accès |
| Identité de l'utilisateur |
Non garanti |
Explicitement prévu |
| Accès aux données de profil |
Nécessite des portées supplémentaires |
Pris en charge via la portée openid |
| Réclamations normalisées |
No. |
Oui |
✅ OIDC = OAuth 2.0 + identité + informations utilisateur standardisées.
Avantages de OIDC
- Interopérabilité : Standard pour de nombreux fournisseurs et plateformes.
- Sécurité : Utilise des jetons signés et des flux éprouvés.
- Flexibilité: Fonctionne pour les applications Web, les applications mobiles et les API.
- Évolutivité : Idéal pour les systèmes distribués ou multi-locataires.
- Identité fédérée : Une seule connexion fonctionne sur de nombreux services.
Jetons d'identification expliqués
Un ID Token est un JWT (JSON Web Token) qui contient des informations sur l'utilisateur.
- Réclamations courantes:
sub: Sujet (identifiant utilisateur)
email: Courriel de l'utilisateur
name: Nom complet
iat : Délivré à
exp: Date d'expiration
iss: Émetteur
aud: Audience (votre application)
Exemple de charge utile de jeton d'identification décodé:
{
"sub": "1234567890",
"name": "Jane Doe",
"email": "jane@esadax.com",
"iat": 1692547200,
"exp": 1692550800,
"iss": "https://auth.provider.com",
"aud": "esadax-app"
}
Mise en œuvre de l'OIDC
-
Choisissez un fournisseur: Google, Auth0, Okta, ou auto-hébergé (par exemple, Keycloak).
-
Enregistrez votre Application : Obtenez un identifiant client et un secret client.
-
Rediriger les utilisateurs vers le fournisseur:
- Incluez
response_type=code et scope=openid.
-
Gestionnaire de rappel:
- Échangez le code contre des jetons à l’aide du point de terminaison
/token du fournisseur.
-
Vérifier le jeton d'identification:
- Vérifiez la signature,
aud, exp, et les autres revendications.
-
Créer une session:
- Utilisez les données du jeton pour authentifier l'utilisateur dans votre système.
Considérations de sécurité
- Validez toujours les jetons d'identification côté serveur.
- Utilisez HTTPS pour éviter l'interception de jetons.
- Définissez des durées de vie courtes pour les jetons et faites tourner les secrets.
- Vérifiez
nonce pour empêcher les attaques de replay.
- Utilisez PKCE (Proof Key for Code Exchange) pour les clients publics comme les SPA et les applications mobiles.
Troubleshooting
-
Signature de jeton non valide?
- Assurez-vous d’utiliser la bonne clé publique (JWKS).
-
Audience (aud) non valide?
- Vérifiez que le jeton a bien été émis pour votre ID client.
-
Jeton expiré?
- Actualisez le jeton ou authentifiez à nouveau l'utilisateur.
-
Fournisseur ne redirigeant pas?
- Vérifiez que votre URI de redirection correspond à ce qui est enregistré.
Glossaire
- OIDC: OpenID Connect, une couche d'identité sur OAuth 2.0.
- OAuth 2.0 : Protocole d'autorisation d'accès aux ressources.
- IdP : Fournisseur d’identité (par exemple, Google, Okta) qui authentifie l’utilisateur.
- ID Token : Un JWT qui confirme l’identité de l’utilisateur.
- Access Token : Jeton utilisé pour accéder aux API protégées.
- PKCE : Extension de sécurité à OAuth 2.0 pour les clients publics.