TX A081025: Délégation de l authentification pour les Services Web Jérémy Vauchelle Enseignant: Aurélien Bénel Intervenants: Chao Zhou Arnaud Pagnier
Plan 1. Présentation du sujet 2. Présentation du protocole OpenID 3. Présentation du protocole OAuth 4. Architecture de services reposant sur OAuth et OpenID 5. Argos, Agorae et l authentification par OpenID 6. Vers des clients lourds? Limites du projet 7. Conclusion TX : Délégation de l authentification pour les Services Web 2
1. Présentation du sujet Sujet Délégation de l authentification pour les services Web Problématique Sites Internet: consommateurs de services Web (SOA) Comment s authentifier auprès de ces services? Comment proposer un accès sécurisé à ces services? Protocoles OpenID et OAuth permettent aux sites web de déléguer la gestion de l authentification et des autorisations Sécuriser une architecture de services web Organisation de la TX Etudier les protocoles OAuth et OpenID Proposer une architecture de test implémentant OAuth et OpenID Proposer une architecture compatible avec les problématiques des outils du laboratoire (Argos et Agorae) TX : Délégation de l authentification pour les Services Web 3
2. Présentation du protocole OpenID (1/2) Généralités Protocole libre/spécifications 2.0 en 2007 But: Ralentir la prolifération des identifiants multiples (SSO) Identification décentralisée Qu est ce qu une OpenID? Une URL: http://jvauchelle.pip.verisignlabs.com Principe On se créé une OpenID sur un site fournisseur spécialisé MyOpenID.com, Verisignlabs.com Un site implémentant les spécifications du protocole délègue l authentification au site fournisseur de l OpenID proposée Avantages du protocole OpenID Sites: Délégation de la problématique d authentification Utilisateurs: Utilisation de la même identité sur des sites différents TX : Délégation de l authentification pour les Services Web 4
2. Présentation du protocole OpenID (2/2) Détails du protocole Etape 1: initiation User présente son OpenID (USI) à un site (RP) via son User-Agent (navigateur) Normalisation de l USI => Claimed Identifier Etape 2: découverte de l OpenID Provider Protocole Yadis ou LinkRel Obtention de l OpenID Provider EndPoint URL Etape 3: association du RP et du OP Génération d un secret partagé Diffie-Hellman Key Exchange Etape 4: Requête d authentification Redirection vers OP Etape 5: Authentification OP vérifie que l User est bien celui qui il prétend être Etape 6: Réponse d authentification Redirection vers le RP Etape 7: Vérification Grâce au secret partagé ou en interrogeant directement le OP TX : Délégation de l authentification pour les Services Web 5
3. Présentation du protocole OAuth (1/2) Généralités Protocole libre/spécifications 1.0 en 2007 Comment accéder aux API de manière sécurisée? Principe Utilisateur navigant sur un site souhaite accéder de manière sécurisée à des services Web situés sur un autre site sans fournir ses identifiants au premier Fonctionne par jetons OAuth/OpenID: vous ne voyez pas la différence? OAuth Fournir un accès sécurisé à un service Web OpenID Vérifier qu un utilisateur est bien celui qu il prétend être OAuth: guide des bonnes pratiques TX : Délégation de l authentification pour les Services Web 6
3. Présentation du protocole OAuth (2/2) Pré requis Confiance entre le C et le SP Consumer Key + Consumer Secret Protected Resources hébergées sur le SP Détails du protocole Etape A: Demande Request Token C demande un RT au SP Etape B: Redirection C redirige User vers SP Etape C: Autorisation utilisateur User s authentifie sur SP User autorise C à utiliser les ressources du SP Marquage du RT comme autorisé SP redirige User vers C Etape D: Demande Access Token C demande un AT Etape E: Accord Access Token SP donne au C un AT Etape F: Accès aux ressources Grâce au AT TX : Délégation de l authentification pour les Services Web 7
4. Architecture de services basée sur OAuth/OpenID (1/6) Problématique Mettre en place une architecture combinant OAuth et OpenID Sécurité Authentification d un utilisateur par OpenID sur un site consommateur d un service Web Service Web consommé s authentifie grâce à l OpenID de l utilisateur Echange d infos entre le Service Web et le site consommateur sécurisé par OAuth TX : Délégation de l authentification pour les Services Web 8
4. Architecture de services basée sur OAuth/OpenID (2/6) Périmètre technologique Serveur Apache HTML/PHP5/MySQL Nécessité d une connexion à Internet Librairies OAuth-PHP Implémentation des services OAuth en PHP5 PHP-OpenID Implémentation des services OpenID en PHP5 Système Deux sites Web Site consommateur de services Web: consumer Site fournissant le service Web: provider Fournisseur OpenID Base de données MySQL TX : Délégation de l authentification pour les Services Web 9
4. Architecture de services basée sur OAuth/OpenID (3/6) Architecture TX : Délégation de l authentification pour les Services Web 10
4. Architecture de services basée sur OAuth/OpenID (4/6) Première utilisation Etablissement du contrat de confiance entre le Consumer et le Provider Etapes S identifier par OpenID sur le Consumer Enregistrer le Consumer sur le Provider Récupérer le Consumer Key et le Consumer Secret Configurer Service.php Description du serveur OAuth $server = array( 'consumer_key' => '1b0f4a22314e7afd8131ed61237f3cc4049085db1', 'consumer_secret' => '6885b4817c443cc63c383c04d894803d', 'server_uri' => 'http://localhost/provider/hello.php', 'signature_methods' => array('hmac-sha1', 'PLAINTEXT'), 'request_token_uri' => 'http://localhost/provider/request_token.php', 'authorize_uri' => 'http://localhost/provider/try_auth.php', 'access_token_uri' => 'http://localhost/provider/access_token.php' ); TX : Délégation de l authentification pour les Services Web 11
4. Architecture de services basée sur OAuth/OpenID (5/6) Scénario d utilisation normale :User :Consumer :Service Provider Identification via OpenId (déconseillé) Demande d'utilisation du WS (Request Token) Réception du Request Token Demande d'authentification via OpenId Authentification Redirection Demande d'autorisation d'utilisation des ressources Autorisation donnée Redirection Demande d'échange du Request Token contre un Access Token Reception de l'acces Token Accès aux ressources TX : Délégation de l authentification pour les Services Web 12
4. Architecture de services basée sur OAuth/OpenID (6/6) Conclusion Evolutions de la sécurité en matière d authentification et d autorisations Faire confiance à des services tiers = défaut de sécurité? Jusqu à quel point faire confiance et à qui? OAuth : partage d images Technologies à surveiller Vers les outils du laboratoire Problématique de la seconde partie axées sur l authentification Utilisation de OpenID uniquement TX : Délégation de l authentification pour les Services Web 13
5. Argos, Agorae et l authentification par OpenID (1/5) Contexte Hypertopic Protocole/modèle pour l organisation de connaissances Service web REST Lié à une grammaire XML, un modèle d URL, des requêtes HTTP Argos Serveur web d application Hypertopic Agorae Serveur web d application consommateur du service d Argos Framework Zend (PHP) Modèle MVC Problématique Authentifier les utilisateurs du service Argos navigant sur Agorae TX : Délégation de l authentification pour les Services Web 14
5. Argos, Agorae et l authentification par OpenID (2/5) Périmètre technologique Serveur Apache pour le composant développé HTML/PHP5 Nécessité d une connexion à Internet Machine virtuelle pour Argos Librairies Zend Framework pour compatibilité avec Agorae 3 niveaux d authentification Au niveau du composant Utilisateur s authentifie par OpenID A chaque requête, au niveau d Argos Composant envoie à Argos l OpenID de l utilisateur connecté 2 niveaux d authentification Argos s authentifie auprès de l OpenID Provider grâce à l OpenID de l utilisateur connecté Argos vérifie les droits de l utilisateur en fonction de son OpenID (gestion des autorisations) TX : Délégation de l authentification pour les Services Web 15
5. Argos, Agorae et l authentification par OpenID (3/5) Architecture Extrait de actors.xml <actors> <actor href="http:// argos.vmware.hypertopic.org /actor/jeremy/" openid= http://jvauchelle.pip.verisignlabs.com >Jérémy Vauchelle</actor> </actors> TX : Délégation de l authentification pour les Services Web 16
5. Argos, Agorae et l authentification par OpenID (4/5) Schéma d utilisation du système :User :WS Consumer :WS Provider :OID Provider Fournit OID Authentication OID Identification ok Affichage du formulaire d'intéraction avec le WS provider Requête d'utilisation du WS Demande d'authentification du WS Provider Authentification (1st and 2nd part) Service authentifié Authentification ok Construction de la requête Requête avec envoi de l'oid et du fait que le service ait bien été authentifié Affichage du résultat à l'utilisateur Renvoi du résultat Vérification des droits de l'utilisateur TX : Délégation de l authentification pour les Services Web 17
5. Argos, Agorae et l authentification par OpenID (5/5) Conclusion But de la TX Prototype d une solution d authentification sur Agorae/Argos Utilisation d une technologie novatrice: OpenID Délégation de l authentification Quelles améliorations? Actors.xml OpenID Provider en interne Avenir Intégration à Agorae et Argos? TX : Délégation de l authentification pour les Services Web 18
6. Vers des clients lourds? Limites du projet Spécifications OpenID axées sur les clients légers HTTP Sessions utilisateurs Redirections Passage de paramètres par URL Clients lourds? Spécifications précisent que le client est un navigateur web Solution? Associer un client lourd à un client léger Les forces d OpenID en font ses faiblesses en matière de flexibilité TX : Délégation de l authentification pour les Services Web 19
Conclusion Rappel des problématiques Délégation de l authentification et des autorisations pour les services Web OpenID/OAuth Solutions recherchées Etude des protocoles OAuth et OpenID Mise en place d une architecture de test Application au système Argos/Agorae Perspectives d amélioration Protocoles récents A mûrir encore un peu OpenID : Avenir du SSO 160 millions de comptes déjà créés TX : Délégation de l authentification pour les Services Web 20