3. Contexte
Une complexité croissante
La complexité est au cœur des systèmes
d'information (SI) d'aujourd'hui
Une décentralisation nécessaire
Une identité multiple
4. Emergence du Social Login
Utiliser les services d'authentification des
réseaux sociaux
8. Social Login – Pourquoi ?
Pour l'utilisateur
- Moins de login et mots de passe
- Meilleure gestion de nos identités
- Meilleure controle
Pour le fournisseur de service
- Enregistrement assez simple
- Information plus fiable
- Plus d'information!
9. Social Login – Les standards
Autorisation
Délégation de l'autorisation
Oauth 2.0
Authentification SSO
SAML 2.0
OpenID
Service d'identité
10. Social Login – Les standards
OpenID
SAML
Systéme d'autentification qui permet l'autentification unique
Ne gère pas les autorisations
Accès à des informations trop confidentielles
11. Oauth 2.0 – Emergence
OAuth est un protocole qui permet l’accès à des
données de manière sécurisée et en fonction de ce
que l’utilisateur souhaite autoriser d’accès.
OAuth est né de la volonté d’offrir une solution simple et
sécurisée aux mécanismes d’autorisation 3 parties.
–
D’une part le client qui représente l’application qui
veut utiliser mes données,
–
D’autre part le serveur qui possède les données en
question
–
L'utilisateur qui valide ou non l’accès à ses données.
13. Oauth 2.0 – Comment ça marche
Bonjour Blog, j'aimerai aussi que tu
Publies mes « posts » sur Facebook
Pas de probléme, donne moi ton login
Et ton mot de passe Facebook, je m'y
connecterai en ton nom pour mettre à jour
ton profil
14. Oauth 2.0 – Comment ça marche
Tu m'excuses, mais j'ai moyennement
Confiance en toi Blog, tu ne peut pas
Faire autrement que avoir mes
Informations confidentielles
15. Oauth 2.0 - framework d'autorisation
Permettre à des applications et des fournisseurs de services
d'accéder à des données d'un utilisateur en lui demandant sa
permission tout en protégeant le pseudonyme et le mot de passe
des utilisateurs.
16. Oauth 2.0 – Les roles
Resource
Owner
Un internaute
Client
Utilise un blog
Authorization
Server
Resource
Server
En s'authentifiant via Facebook
Et pour également publier mes
Posts sur son profil
17. Oauth 2.0 - Le principe d'autorisation
2- S'authentifie et autorise l'application cliente
3- Délivre le token d'accés
1- Accéde au
Service
Client
Authorization
Server
Délégue
l'autorisation
4- Accéde à la ressource protégée
Resource Server
18. Oauth 2.0 - Le principe d'authentification
Moi
1- Blog me demande l'autorisation d'aller récupérer chez Facebook les données
relatives à mon identité pour m'authentifier
2- Je m'authentifie chez Facebook et autorise Blog à lire mes données d'identité
19. Exemple d'utilisation avec Google
API en PHP
L'utilisation de OAuth se décompose en plusieurs étapes:
On redirige l'utilisateur vers une page de Google demandant à
l'utilisateur s'il accepte de fournir certaines de ses informations
personnelles à notre site web.
Google redirige l'utilisateur vers une page de retour, spécifiée
dans la requête précédente avec un code de retour.
Le site demande à Google une clé d'accès aux APIs Google
avec le code de retour que celui-ci nous à retourné
précédemment.
Le site utilise la clé d'accès fournie par Google pour obtenir
des informations en effectuant des requêtes vers l'API Google
souhaitée.
20. Rediriger l'utilisateur vers une page Google
demandant l'autorisation à celui-ci de fournir
des informations à notre site
//Dans une page du site, insérer un bouton pour rediriger vers Google
<source lang="html5">
<button>Autoriser ce site à utiliser mes informations personnelles sur Google</button>
</source>
<br/>
//Et définir une redirection vers la page de Google qui effectuera la demande d'autorisation:
<br/><br/>
<source lang="javascript">
$("button").click(function() {
window.location = "https://accounts.google.com/o/oauth2/auth?" +
"scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&"+
"state=%2Fprofile&"+
"redirect_uri=http://localhost/oauth2callback.php&"+
"response_type=code&"+
"client_id=1049956440006.apps.googleusercontent.com";
21. Récupérer le code de validation envoyé
par Google et demander une clé
d'accès aux APIs Google
Comme précisé dans la requête envoyée précédemment, Google
renvoie vers la page de callback (ici
http://localhost/oauth2callback.php) avec deux paramètres
HTTP :
le paramètre state fourni dans l'URL ainsi que le code de
validation. Pour récupérer le code de validation, il suffit
d'utiliser la variable $_GET['code']
L'étape suivante consiste à envoyer une autre requête HTTP
vers une URL de Google pour demander à celui-ci de
retourner une clé d'accès (Access Token) aux APIs Google.
22. Récupérer le code de validation envoyé
par Google et demander une clé
d'accès aux APIs Google
$r = new HttpRequest('https://accounts.google.com/o/oauth2/token', HttpRequest::METH_POST);
$fields = array(
'code'=> urlencode($codeGoogle),
'client_id'=>urlencode("1049956440006.apps.googleusercontent.com"),
'client_secret'=>urlencode("BpOaC4VbUZC7qgUqO8K4bF9D"),
'redirect_uri'=>"http://localhost/oauth2callback.php",
'grant_type'=>'authorization_code'
);
$r->addPostFields($fields);
try {
$r->send();
$bodyresponse = $r->getResponseBody();
// Ici il suffit d'effectuer une requête sur une API Google avec la clé d'accès retournée dans la réponse JSON $bodyresponse
} catch (HttpException $ex) {
echo $ex;
}
23. Exemple d'utilisation avec Google
API en PHP
Cet exemple permet uniquement d'avoir accès à
certaines informations provenant de Google :
l'adresse de courriel de l'utilisateur et les informations
du profil (photo, nom, etc.). Pour ajouter, modifier ou
supprimer des informations, il faut modifier la variable
scope dans la première requête envoyée à Google.