Authentification Frankiz
De WikiBR
Révision datée du 28 avril 2012 à 20:03 par Olivier.charvin (discussion | contributions) (Page créée avec « Pour utiliser l'authentification via frankiz il faut faire une demande au BR en précisant les données souhaitées et l'url de la page sur laquelle retournera l'utilisateur ... »)
Pour utiliser l'authentification via frankiz il faut faire une demande au BR en précisant les données souhaitées et l'url de la page sur laquelle retournera l'utilisateur une fois authentifié.
Code de la page d'identification
<?php include 'fkz_auth.php'; if(!isset($_GET['response'])){ frankiz_do_auth(); } $auth = frankiz_get_response(); // et voila ! // les données sont stockées dans $auth = array(key => value, ...);
Code des fonctions utilisées dans la page précédente
<?php $FKZ_KEY = "000";//clé donnée par le BR-man contacté function frankiz_do_auth(){ global $FKZ_KEY; $timestamp = time(); /** * url de la page de login, doit correspondre *exactement* à celle entrée dans * la base de données de Frankiz (définie lors de l'inscription) */ $site = 'http://example.com/login.php'; /** * Champ non utile pour l'authentification et retransmis tel quel par frankiz. * Il est prévu pour pouvoir mettre en place un système de redirection après * authentification, vers la page à partir de laquelle le client avait tenté de se connecter. */ $location = ''; $request = json_encode(array('names', 'rights', 'email', 'sport', 'promo', 'photo'));//données voulues $hash = md5($timestamp . $site . $FKZ_KEY . $request); $remote = 'https://www.frankiz.net/remote?timestamp=' . $timestamp . '&site=' . $site . '&location=' . urlencode(urlencode($location)) . // il faut le faire deux fois !? à mon avis il y a un bug côté BR '&hash=' . $hash . '&request=' . $request; header("Location:" . $remote); exit(); } function frankiz_get_response(){ global $FKZ_KEY; // Read request $timestamp = (isset($_GET['timestamp']) ? $_GET['timestamp'] : 0); $response = (isset($_GET['response']) ? urldecode($_GET['response']) : ''); $hash = (isset($_GET['hash']) ? $_GET['hash'] : ''); $location = (isset($_GET['location']) ? $_GET['location'] : ''); // Frankiz security protocol if (abs($timestamp - time()) > 600) die("Délai de réponse dépassé. Annulation de la requête"); if (md5($timestamp . $FKZ_KEY . $response) != $hash) die("Session compromise."); $response = json_decode($response, true); $response['location'] = $location; // Set empty fields $fields = array('hruid', 'firstname', 'lastname', 'nickname', 'promo', 'photo', 'location'); foreach ($fields as $k) { if (!isset($response[$k])) $response[$k] = ''; } return $response; } ?>