Principes d'ajout d'un fournisseur de service (SP) via PHP-OAuth2¶
On imagine une application PHP qui désire obtenir des utilisateurs depuis le fournisseur OAuth2 d'Authentic2.
L'application est disponible sur https://application.example.net
Authenitc2 est installé sur https://idp.example.net
Installer le module PHP-OAuth2¶
Source : https://github.com/adoy/PHP-OAuth2/
Créer un fichier https://application.example.net/oauth2.php¶
... ou n'importe quel autre nom, avec ce code :
<?php require('Client.php'); require('GrantType/IGrantType.php'); require('GrantType/AuthorizationCode.php'); const REDIRECT_URI = 'https://application.example.net/oauth2.php'; // URL définitive à transmettre à Entr'ouvert const AUTHORIZATION_ENDPOINT = 'https://idp.example.net/idp/oauth2/authorize/'; const TOKEN_ENDPOINT = 'https://idp.example.net/idp/oauth2/access_token/'; const USER_INFO = 'https://idp.example.net/idp/oauth2/user-info/'; const CLIENT_ID = 'xxxxxxxxx'; // à demander à Entr'ouvert const CLIENT_SECRET = 'yyyyyyyyyyyyyyyyyyyy'; // à demander à Entr'ouvert $client = new OAuth2\Client(CLIENT_ID, CLIENT_SECRET); if (!isset($_GET['code'])) { $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, REDIRECT_URI); header('Location: ' . $auth_url); die('Redirect'); } else { $params = array('code' => $_GET['code'], 'redirect_uri' => REDIRECT_URI); $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params); $info = $response['result']; $client->setAccessToken($info['access_token']); $response = $client->fetch(USER_INFO); $compte_citoyen = $response['result']; // ... et ici se placera la construction ou la mise à jour de l'utilisateur // local, puis de la session, etc... dépendant de l'application. var_dump($compte_citoyen); // debug... } ?>
Indiquez à Entr'ouvert l'URL du fichier¶
Par exemple ici https://application.example.net/oauth2.php, et placez bien cette valeur dans la variable REDIRECT_URI du code PHP.
Entr'ouvert vous fera alors parvenir un "CLIENT_ID" et un "CLIENT_SECRET"¶
Ces "CLIENT_ID" et "CLIENT_SECRET" devront être copiés dans le code PHP.
Cliquer sur https://application.example.net/oauth2.php¶
Vous devez être envoyé sur l'IdP : logez-vous et vous reviendrez sur l'application avec un compte.