lto auth
DESCRIPTION
Présentation élaborée par Mlle. Ines dans le cadre des sessions de Lightning Talks à l'Orange Developer Center.TRANSCRIPT
Oauth 2.0
Zid Sonia28 – 11 - 2013
Plan
Contexte Social Login Oauth 2.0 Exemple d'utilisation Conclusion
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
Emergence du Social Login
Utiliser les services d'authentification des
réseaux sociaux
Social Login - C'est quoi ?
Social Login - Tendance
Social Login - Statistiques
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!
Social Login – Les standards
Authentification SSO
Autorisation
Oauth 2.0
OpenID
SAML 2.0
Délégation de l'autorisation
Service d'identité
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
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.
Oauth 2.0 – Emergence
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
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
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.
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
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
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é
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.
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";
});
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).
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;
}
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.
Conclusion
Un protocole d'autorisation qui authentifie
Merci pour votre attention
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