1. OAUTH et OpenID Connect (OIDC)
Cas d'usages
18 Mai 2015
Cyril Grosjean
CTO JANUA
2. Généralités sur OAUTH 2 et OIDC
● Permettre à une application cliente (Web, mobile,..) d'accéder à des
ressources appartenant à un utilisateur et détenues sur un serveur tiers, en
demandant éventuellement le consentement de l'utilisateur, mais sans que
celui-ci ait à nécessairement à donner à l'application cliente son mot de passe
● Permettre la révocation d'une application cliente (et des jetons déjà émis)
● Très récents : (OAuth v1: 2010, v2: 2012, OIDC: 2014)...
● … mais adoption rapide (mobilité, objets connectés, réseaux sociaux ...)
● Focus sur la facilité de déploiement et d'intégration, la mobilité ..
● .. et la sécurité : HTTPS, signature et/ou chiffrement (JWT), permissions
(scope), anti-rejeu de jeton, révocation d'un client, d'un jeton, authentification
du client, consentement de l'utilisateur, flux ne passant pas forcément par le
navigateur, client publique/privé
8. Différences entre OAUTH 1 et 2
● OAUTH 1.0 obsolète
● OAUTH 2.0 généralisé avec des différences d'implémentations d'où
l'émergence d'une offre commerciale visant à simplifier l'interaction avec
différents types de serveur OAUTH 2 : OAuth.io
● Pas d'expiration / expiration des jetons (mais possibilité de les renouveler)
● Pas de notion de scope / apparition du scope (ce à quoi un jeton donne
droit)
● Signature des requêtes (problèmes d'inter-opérabilités) / utilisation d'HTTPS
à la place
● Pas de serveur d'autorisation / serveur d'autorisation externe
9. Apports d'OIDC
● En OIDC, le serveur cible (qui détient les ressources) est aussi celui qui délivre les jetons
● mode déconnecté: permet à une application de continuer à accéder à
des ressources d'une autre application alors que l'utilisateur s'est déconnecté
● nouveau flux (hybride) : compromis performances/sécurité (cf. diapo. suivante)
● nouveaux services (découverte, auto-enregistrement, session)
● un jeton en plus (id_token), qui plus est dans un format normalisé et sécurisé
● utilisation de JWT possible dans les requêtes, les réponses, ou à l'authentification du client:
facilite le développement, augmente la sécurité
● possibilité de demander des champs (claims) particuliers plutôt que la totalité
● possibilité de distribuer les sources (distributed & aggregated claims)
● auto-génération de jeton
● authentification à l'initiative d'une application tierce
10. Cas d'usages et cinématiques OAUTH 2 et OIDC
● Autorisation par code : mode le + sûr mais 2 requêtes
● Autorisation implicite : mode optimisé pour le mobile, si l'on privilégie les performances
(une seule requête et pas de jeton de rafraichissement)
● Autorisation par code et flux hybride (OIDC): compromis entre performances
et sécurité pour le mobile (1 ou 2 requêtes, jeton de rafraichissement et
authentification du client possibles)
● Autorisation par fourniture au client de l'identifiant/mot de passe de l'utilisateur : si
modes précédents ne conviennent pas et que le client
est "sûr" (exemple : OS). OAUTH2 uniquement (pas de sens en OIDC)
● Autorisation par fourniture de l'identifiant/mot de passe de l'application: cas où le client
OAUTH2 doit accéder à son propre compte (scénario sans utilisateur)
● Cinématique à l'initiative d'une application tierce : permet d'avoir différents sens de
navigation
11. Janua est une société de service et de consulting qui se
propose de vous accompagner vers le monde de la gestion
des identités, de la sécurité et des logiciels libres.
● ENL (Entreprise du Numérique Libre – SS2L) fondée en 2004 à Sophia
Antipolis (Alpes-Maritimes, région Paca)
● Nos domaines d’expertise : Gestion des Identités et Open Source.
● Nos prestations : audit, consulting, intégration, AMOA, MEP,
accompagnement, développement au forfait et support.
● Notre approche : les processus itératifs, les maquettes (POC) et l’utilisation de
méthodologies « agiles ».
http://www.janua.fr