lto auth

26
Oauth 2.0 Zid Sonia 28 – 11 - 2013

Upload: odc-orange-developer-center

Post on 20-Jun-2015

440 views

Category:

Technology


4 download

DESCRIPTION

Présentation élaborée par Mlle. Ines dans le cadre des sessions de Lightning Talks à l'Orange Developer Center.

TRANSCRIPT

Page 1: LTO Auth

Oauth 2.0

Zid Sonia28 – 11 - 2013

Page 2: LTO Auth

Plan

Contexte Social Login Oauth 2.0 Exemple d'utilisation Conclusion

Page 3: LTO Auth

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

Page 4: LTO Auth

Emergence du Social Login

Utiliser les services d'authentification des

réseaux sociaux

Page 5: LTO Auth

Social Login - C'est quoi ?

Page 6: LTO Auth

Social Login - Tendance

Page 7: LTO Auth

Social Login - Statistiques

Page 8: LTO Auth

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!

Page 9: LTO Auth

Social Login – Les standards

Authentification SSO

Autorisation

Oauth 2.0

OpenID

SAML 2.0

Délégation de l'autorisation

Service d'identité

Page 10: LTO Auth

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

Page 11: LTO Auth

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.

Page 12: LTO Auth

Oauth 2.0 – Emergence

Page 13: LTO Auth

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

Page 14: LTO Auth

Oauth 2.0 – Comment ça marche

Tu m'excuses, mais j'ai moyennementConfiance en toi Blog, tu ne peut pas

Faire autrement que avoir mes Informations confidentielles

Page 15: LTO Auth

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 passedes utilisateurs.

Page 16: LTO Auth

Oauth 2.0 – Les roles

Un internaute Utilise un blog En s'authentifiant via Facebook Et pour également publier mes Posts sur son profil

Resource Owner

Resource Server

AuthorizationServer Client

Page 17: LTO Auth

Oauth 2.0 - Le principe d'autorisation

Client

AuthorizationServer

Resource Server

2- S'authentifie et autorise l'application cliente

1- Accéde auService

3- Délivre le token d'accés

4- Accéde à la ressource protégée

Délégue l'autorisation

Page 18: LTO Auth

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é

Page 19: LTO Auth

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.

Page 20: LTO Auth

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";

});

Page 21: LTO Auth

Récupérer le code de validation envoyé par Google et demander une clé

d'accès aux APIs GoogleComme 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.

Il faut donc une requête HTTP pour effectuer une requête sur l'URL fournie par Google dans la documentation : https://accounts.google.com/o/oauth2/token en passant en paramètre le code de vérification que Google a retourné, le paramètre client_id et le paramètre secret_key fourni par l'API Google, une URL de retour (la même que dans la requête précédente) et un paramètre spécial nommé grant_type (OAuth2.0 précise de mettre la valeur authorization_code dans ce paramètre).

Page 22: LTO Auth

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;

}

Page 23: LTO Auth

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.

Page 24: LTO Auth

Conclusion

Un protocole d'autorisation qui authentifie

Page 25: LTO Auth

Merci pour votre attention

Page 26: LTO Auth

Références

http://fr.wikipedia.org/wiki/OAuth?veaction=edit

https://developers.google.com/appengine/docs/java/oauth/overview?hl=it

https://developer.linkedin.com/documents/authentication

http://developer.mixi.co.jp/appli/ns/mob/2-legged-oauth/

https://github.com/reddit/reddit/wiki/OAuth2

http://dev.viadeo.com/documentation/authentication/oauth-authentication/

https://dev.xing.com/docs/authentication

http://www.slideshare.net/ASF-WS/asfws-2021-oauth-un-protocole-dautorisation-qui-authentifie-par-maxime-feroulcolequiauthentifie