Ce plugin permet de remplacer ou compléter la connexion SPIP classique SPIP par une authentification via des fournisseurs OAuth2 / OpenID Connect :
- Keycloak
- ou tout provider compatible
Cas d’usage :
- suppression des mots de passe locaux dans SPIP
- centralisation de l’authentification
- SSO (Single Sign-On)
Installation rapide
Pré-requis :
- OpenSSL activé
- cURL activé
- plugin oauth2_client installé
Étapes :
- Installer le plugin
- Créer une application chez votre provider
- Récupérer :
- Client ID
- Client Secret
- Déclarer cette URL de redirection:
https://www.votre-site.ext/spip.php?action=login_oauth2_callback&provider=XXX - Configurer le provider dans SPIP
Le bouton de connexion apparaît automatiquement.
Pour les webmestres
Configuration :
- forcer Oauth2 en désactivant la connexion SPIP classique
- accepter uniquement les emails vérifiés par le provider
- activer / désactiver un provider
- saisir client_id et client_secret
- personnaliser le label du bouton
Authentification : l’utilisateur est recherché via OAuth2
- si l’identification renvoyée par le provider et l’email est déclaré dans SPIP, alors connexion réussie
- sinon accès refusé
Conditions :
- email préalablement déclaré dans l’auteur
- unicité de l’email dans les auteurs
- auteur actif (pas à la poubelle)
Pour les développeurs
Ajout de provider via pipeline login_oauth2_providers:
Exemple Google (fourni):
$providers['google_login'] = [
'label' => 'Google',
'mode' => 'generic',
'discovery' =>
'https://accounts.google.com/.well-known/openid-configuration',
'oauth2_defaults' => [
'provider' => 'generic',
'authorize_endpoint' =>
'https://accounts.google.com/o/oauth2/v2/auth',
'token_endpoint' =>
'https://oauth2.googleapis.com/token',
'scope' => 'openid email profile',
'oidc' => [
'enabled' => true
],
'issuer' => 'https://accounts.google.com',
'pkce' => [
'enabled' => true,
'method' => 'S256'
]
],
'userinfo_endpoint' =>
'https://openidconnect.googleapis.com/v1/userinfo'
];
En mode discovery
$providers['proconnect_login'] = [
'label' => 'ProConnect',
'mode' => 'generic',
'discovery' =>
'https://fca.integ01.dev-agentconnect.fr/api/v2/.well-known/openid-configuration',
'oauth2_defaults' => [
'provider' => 'generic',
'scope' => 'openid email profile',
'oidc' => [
'enabled' => true
],
'pkce' => [
'enabled' => true,
'method' => 'S256'
]
]
];
Icônes providers
Chaque provider peut être associé à une icône SVG. Par convention, le plugin charge automatiquement images/<provider>.svg
Exemple :
- images/google_login.svg
- images/proconnect_login.svg
Fonctionnement:
- clic sur le login de connection Oauth2
- redirection vers le provider
- retour avec authorization_code
- échange contre access_token
- récupération des informations utilisateur
- connexion SPIP
Liaison utilisateurs :
La table spip_auteurs_oauth2 stocke:
- id_auteur
- provider
- subject
- date d’autorisation
- type autorisation
Sécurité
Assurée par le plugin oauth2_client :
- Authorization Code Flow
- PKCE (S256)
- validation du state (anti-CSRF)
- validation JWT (OIDC)


No discussion
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
