Prérequis
phpBB 3.x
système Linux + PHP 5.6 ou 7.1.
Attention ! le fonctionnement d’OIDC exige une application cliente installée sur un serveur sécurisé (protocole https://).
Inscription sur le serveur OAuthSD
L’application recevant l’extension doit être enregistrée sur le serveur OAuthSD [1].
La procédure est décrite ici : OpenID Connect : Lier une application cliente au serveur OAuthSD.
En suivant cette procédure :
vous vous inscrirez en tant qu’auteur sur le serveur,
vous enregistrerez votre application. L’enregistrement se fait ici : Inscrire une application cliente.
Vous devrez :
- configurer l’adresse de retour (Redirect URI) sous la forme suivante : https://mon_application.com/ucp.php?mode=login&login=external&oauth_service=oauthsd
- Inscrire les scopes "openid sli".
Notez les valeurs de "Client id" (qui correspondra à "Key" dans phpBB) et "Client secret".
Installation et configuration sur phpBB
1. Le client OIDC pour phpBB s’installe comme toute extension de phpBB :
télécharger l’extension OIDC client for phpBB (se trouve aussi sur GitHub),
décompresser l’archive,
installer le code dans /ext/bdegoy/oauthsd,
dans phpBB, installez l’extension "DnC OIDC client for OAuthSD" (section Customize -> Extension Manager).
2. Installez le service OAuthSD pour Lusitanian / PHPoAuthLib :
phpBB utilise la bibliothèque Lusitanian / PHPoAuthLib pour mettre en œuvre le SSO avec OIDC. Nous devons compléter cette bibliothèque avec le service Oauthsd. Le service OAuthSD est fourni avec le fichier ... /oauthsd-phpbb/OAuth/OAuth2/Service/Oauthsd.php qui doit être copié dans le répertoire .../vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/.
3. dans phpBB, section Client Communication -> Authentication, sélectionnez la méthode d’authentification Oauth :
Entrez les paramètres pour OAuthSD :
puis actionnez le bouton "Submit".
Si tout s’est bien passé, un bouton "OAuthSD" doit apparaître dans la page de Connexion :
Notes :
Le bouton "OAuthSD" n’apparait pas partout où la connexion est possible. Par exemple, on s’attendrait à voir le bouton sur la page de connexion à l’administration, mais ce n’est pas le cas. Cela dépend de phpBB [2], pas de l’extension.
phpBB : Tentative de connexion avec un compte inconnu du forum
Si on tente de se connecter avec un login (un "Nom d’utilisateur" dans le vocabulaire phpBB) qui n’est pas enregistré sur le forum, phpBB signale l’erreur :
il est proposé de :
lier le compte à un compte existant : Entrer le Nom d’utilisateur et le Mot de passe puis actionner "Connexion" [3]
créer un nouveau compte : Actionnez le bouton "S’enregistrer".
Notes :
Seul le login (le Nom d’utilisateur) doit être identique des deux côtés, le mot de passe est propre à chaque système.
On pourrait penser à une autre solution : inscrire le compte phpBB sur le serveur d’authentification. Mais cela irait à l’encontre du principe de connexion unique (SSO) : si un utilisateur a une inscription sur OAuthSD, c’est pour pouvoir se connecter à différents systèmes avec les mêmes identifiants.
Feuille de route
Paramétrer l’URL du serveur OIDC afin de pouvoir choisir le serveur d’authentification. Cela devrait conduire à un client OpenID Connect universel.
Essayer d’agir sur phpBB pour mieux intégrer l’authentification. Par exemple, l’insertion du bouton d’authentification sur la page de connexion ACL.
En conclusion ...
Cette inscription d’une application PhpBB montre qu’OAuthSD est bien un serveur d’authentification tout aussi accessible que les grandes plateformes. Mais avec OAuthSD nous vous offrons beaucoup plus : le moyen de protéger vos données et de protéger les visiteurs de vos sites à l’aide d’un serveur de votre propriété.
Notons que cette utilisation qui est faite d’OpenID Connect réduit le point de vue au SSO. OpenID Connect, c’est énormément plus que le SSO, qui n’en est qu’un aspect mineur.
OpenID Connect, c’est :
la protection des mots de passe,
la sécurisation des échanges entre applications réparties dans le Cloud,
et, avec OAuthSD, la Connexion unique (Single Login-In, SLI)
etc.
Voyez :
https://area51.phpbb.com/docs/dev/3.2.x/extensions/tutorial_authentication.html
On GitHub
https://github.com/bdegoy/oauthsd-phpbb
Issues (Bug reports or feature request) :
https://github.com/bdegoy/oauthsd-phpbb/issues