Projet

Général

Profil

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.

Formats disponibles : PDF HTML TXT