Accueil > OpenID Connect OAuth Server par DnC > Développer > Extension OpenID Connect pour phpBB

Extension OpenID Connect pour phpBB

Un client OIDC pour phpBB. Permet à phpBB d’utiliser OpenID Connect au lieu de l’authentification classique. (Attention : à ne pas confondre avec les extension pour OpenID !)

Les développeurs d’application phpBB pourront faciliter l’intégration des forums dans leurs autres applications Web en permettant l’accès des utilisateurs avec une inscription unique configurée sur le serveur OIDC (Single Sign-On, SSO).

OAuthSD vous offre plus que l’inscription unique. La connexion unique (Single Login-In, SLI) : une fois connecté à une application, vous serez connecté de manière transparente aux autres (à condition bien sûr qu’elles soient enregistrées sur le serveur).

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 :

Notre prototype est visible à l’URL : https://phpbb.dnc.global/.

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

Notes

[1Dans l’état actuel du développement, l’extension ne permet que la connexion à ce serveur OAuthSD, cela n’est donc envisageable que dans une phase de développement. DnC propose à ses clients de posséder leur propre serveur OIDC afin de bénéficier de toute la sécurité offerte par un système d’authentification privé.

[2La connexion à l’aide d’un système extérieur n’est gérée que dans le script ucp.php (User Control Panel) mais pas dans acp.php (Admin Control Panel).

[3Si, ce faisant, vous liez l’utilisateur Oauth à un utilisateur phpBB qui avait déjà été lié, vous obtenez une erreur SQL du genre "Duplicate entry ’2-oauthsd’ for key ’PRIMARY’ [1062]", où "2" est l’ID de l’utilisateur phpBB . C’est un bug de phpBB qui devrait auparavant effacer l’entrée user_id = 2 dans la table phpbb_oauth_account. Si on efface manuellement cette entrée, on peut terminer l’opération.