Note de traduction.Dans ce magnifique document proposĂ© par Okta, les principes de fonctionnement d'OAuth et d'OIDC (OpenID Connect) sont prĂ©sentĂ©s de maniĂšre simple et visuelle. Ces connaissances seront utiles aux dĂ©veloppeurs, aux administrateurs systĂ©miques et mĂȘme aux « utilisateurs lambda » des applications web populaires, qui Ă©changent probablement Ă©galement des donnĂ©es sensibles avec d'autres services.
à l'époque des débuts d'internet, partager des informations entre services était facile. Il suffisait de donner son identifiant et son mot de passe d'un service à un autre pour qu'il puisse accéder à votre compte et obtenir toutes les informations nécessaires.

« Donnez votre compte bancaire. » â « Nous vous promettons que votre mot de passe et votre argent seront en sĂ©curitĂ©. C'est promis, jurĂ© ! » *hi hi*
Horreur ! Personne ne devrait jamais demander à un utilisateur de partager son identifiant et son mot de passe, ses informations d'identification, avec un autre service. Il n'y a aucune garantie que l'organisation derriÚre ce service conservera les données en toute sécurité et ne collectera pas plus d'informations personnelles que nécessaire. Cela peut sembler fou, mais certaines applications continuent d'utiliser de telles pratiques !
Aujourd'hui, il existe une norme unique permettant à un service d'accéder en toute sécurité aux données d'un autre. Malheureusement, ces normes sont truffées de jargon et de termes techniques qui compliquent leur compréhension. L'objectif de ce document est d'expliquer leur fonctionnement à l'aide d'illustrations simples (Pensez-vous que mes dessins ressemblent à des gribouillages d'enfants ? Eh bien, tant pis !).

D'ailleurs, ce guide est également disponible au format vidéo :

Mesdames et messieurs, voici : OAuth 2.0
â c'est une norme de sĂ©curitĂ© qui permet Ă une application d'obtenir une autorisation pour accĂ©der Ă des informations dans une autre application. La sĂ©quence d'actions pour accorder l'autorisation [permission] ou de consentement [consent]) est souvent appelĂ©e autorisation [authorization] ou mĂȘme autorisation dĂ©lĂ©guĂ©e [delegated authorization]. GrĂące Ă cette norme, vous autorisez une application Ă lire des donnĂ©es ou Ă utiliser des fonctionnalitĂ©s d'une autre application en votre nom, sans lui communiquer votre mot de passe. GĂ©nial !
Prenons l'exemple d'un site intitulé « Le Pire Calembour du Jour » [Terrible Pun of the Day] Vous avez décidé de vous inscrire pour recevoir quotidiennement des jeux de mots sous forme de messages texte sur votre téléphone. Vous avez beaucoup aimé le site et avez voulu le partager avec tous vos amis, car tout le monde aime les punÚses, n'est-ce pas ?

« Mauvais jeu de mots du jour : Avez-vous entendu parler de ce gars qui a perdu la moitiĂ© gauche de son corps ? Maintenant, il a toujours raison ! » (traduction approximative, car il y a un jeu de mots dans l'original â note de traduction)
Il est clair qu'il n'est pas pratique d'Ă©crire Ă chaque personne de votre liste de contacts. Et, si vous ĂȘtes ne serait-ce qu'un peu comme moi, vous ferez tout pour Ă©viter de faire du travail supplĂ©mentaire. Heureusement, Terrible Pun of the Day peut inviter tous vos amis pour vous ! Il vous suffit d'ouvrir l'accĂšs Ă l'e-mail de vos contacts â le site enverra automatiquement des invitations (OAuth gĂšre ça) !

« Tout le monde aime les jeux de mots ! - Ătes-vous dĂ©jĂ connectĂ© ? - Voulez-vous donner accĂšs au site Terrible Pun of the Day Ă votre liste de contacts ? - Merci ! Maintenant, nous enverrons chaque jour des rappels Ă tous ceux que vous connaissez, jusqu'Ă la fin des temps ! Vous ĂȘtes le meilleur ami ! »
- Choisissez votre service de messagerie.
- Si nécessaire, rendez-vous sur le site de votre messagerie et connectez-vous à votre compte.
- Autorisez le site Terrible Pun of the Day à accéder à vos contacts.
- Retournez sur le site Terrible Pun of the Day.
Dans le cas oĂč vous changeriez d'avis, les applications utilisant OAuth fournissent Ă©galement un moyen d'annuler l'accĂšs. Si vous dĂ©cidez de ne plus vouloir partager vos contacts avec Terrible Pun of the Day, vous pouvez vous rendre sur le site de votre messagerie et supprimer le site de jeux de mots de la liste des applications autorisĂ©es.
Flux OAuth
Nous venons de passer par ce que l'on appelle généralement un flux [flow] OAuth. Dans notre exemple, ce flux se compose d'étapes visibles, ainsi que de plusieurs étapes invisibles, au cours desquelles les deux services s'accordent sur un échange sécurisé d'informations. Dans l'exemple précédent avec Terrible Pun of the Day, c'est le flux OAuth 2.0 le plus courant, connu sous le nom de flux « avec code d'autorisation » [«authorization code» flow].
Avant de plonger dans les détails du fonctionnement d'OAuth, parlons du sens de certains termes :
- Propriétaire de la ressource:

C'est vous ! Vous possĂ©dez vos identifiants, vos donnĂ©es et gĂ©rez toutes les actions qui peuvent ĂȘtre effectuĂ©es sur vos comptes. - Client:

Une application (par exemple, le service Terrible Pun of the Day) qui souhaite accĂ©der ou effectuer des actions au nom de PropriĂ©taire de la ressourceâa. - Serveur d'Autorisation:

Une application qui sait PropriĂ©taire de la ressourceâa et oĂč PropriĂ©taire de la ressourceâa dĂ©jĂ un compte. - Serveur de Ressources:

Une interface de programmation d'application (API) ou un service que Client veut utiliser au nom de PropriĂ©taire de la ressourceâa. - URI de Redirection:

Le lien par lequel Serveur d'Autorisation redirigera PropriĂ©taire de la ressourceâa aprĂšs avoir accordĂ© l'autorisation Clientâu. Parfois, cela s'appelle « URL de Retour » (« Callback URL »). - Type de RĂ©ponse:

Le type d'information que l'on s'attend Ă recevoir Client. Le plus courant Type de RĂ©ponseâom est un code, c'est-Ă -dire Client s'attend Ă recevoir Code d'Autorisation. - PortĂ©e:

C'est une description dĂ©taillĂ©e des permissions requises par Clientâu, comme l'accĂšs aux donnĂ©es ou l'exĂ©cution de certaines actions. - Consentement:

Serveur d'Autorisation prend Les PortĂ©es, demandĂ©es par Clientâom, et demande Ă PropriĂ©taire de la ressourceâa s'il est prĂȘt Ă accorder Clientâu les permissions appropriĂ©es. - ID Client:

Cet ID est utilisĂ© pour identifier Clientâa sur Serveur d'Autorisationâe. - Secret Client:

C'est un mot de passe qui est connu uniquement de Clientâu et Serveur d'Autorisationâu. Il leur permet d'Ă©changer des informations de maniĂšre confidentielle. - Code d'Autorisation:

Un code temporaire avec une durĂ©e de validitĂ© limitĂ©e, que Client propose Serveur d'Autorisationâu en Ă©change de Jeton d'AccĂšs. - Jeton d'AccĂšs:

Une clĂ© que le client utilisera pour communiquer avec Serveur de Ressourcesâom. C'est comme un badge ou une carte magnĂ©tique, donnant Clientâu l'autorisation de demander des donnĂ©es ou d'exĂ©cuter des actions sur Serveur de Ressourcesâe en votre nom.
Remarque: parfois, le Serveur d'Autorisation et le Serveur de Ressources sont le mĂȘme serveur. Cependant, dans certains cas, ce peuvent ĂȘtre des serveurs diffĂ©rents, qui n'appartiennent mĂȘme pas Ă la mĂȘme organisation. Par exemple, le Serveur d'Autorisation peut ĂȘtre un service tiers de confiance pour le Serveur de Ressources.
Maintenant que nous nous sommes familiarisés avec les concepts de base de OAuth 2.0, revenons à notre exemple et examinons en détail ce qui se passe dans le flux OAuth.

- Vous, PropriĂ©taire de la ressource, souhaitez accorder Ă la service Terrible Pun of the Day (Clientâu) accĂšs Ă vos contacts afin qu'il puisse envoyer des invitations Ă tous vos amis.
- Client redirige le navigateur vers la page de Serveur d'Autorisationâa et inclut dans la demande ID Client, URI de Redirection, Type de RĂ©ponse une ou plusieurs Les PortĂ©es (permissions) dont il a besoin.
- Serveur d'Autorisation vérifie votre identité, en demandant votre nom d'utilisateur et votre mot de passe si nécessaire.
- Serveur d'Autorisation affiche un formulaire Consentement (de confirmation) avec la liste de toutes les Les PortĂ©es, demandĂ©es par Clientâom. Vous acceptez ou refusez.
- Serveur d'Autorisation vous redirige vers le site de Clientâa, en utilisant URI de Redirection avec Code d'Autorisation (le code d'autorisation).
- Client se connecte directement Ă Serveur d'Autorisationâom (contournant le navigateur PropriĂ©taire de la ressourceâa) et envoie des informations de maniĂšre sĂ©curisĂ©e. ID Client, Secret Client et Code d'Autorisation.
- Serveur d'Autorisation vĂ©rifie les donnĂ©es et rĂ©pond avec Jeton d'AccĂšsâun (jeton d'accĂšs).
- Maintenant Client peut ĂȘtre utilisĂ© Jeton d'AccĂšs pour envoyer une demande Ă Serveur de Ressources afin d'obtenir une liste de contacts.
Client ID et Secret
Bien avant que vous n'ayez donné à Terrible Pun of the Day l'accÚs aux contacts, le Client et le Serveur d'Autorisation avaient établi une relation de travail. Le Serveur d'Autorisation a généré le Client ID et le Client Secret (parfois appelés App ID et App Secret) et les a envoyés au Client pour une interaction ultérieure dans le cadre d'OAuth.

«â Salut ! Je voudrais travailler avec toi ! â Pas de souci ! Voici tes Client ID et Secret ! »
Le nom suggĂšre que le Client Secret doit ĂȘtre gardĂ© secret, afin qu'il ne soit connu que du Client et du Serveur d'Autorisation. En effet, c'est avec cela que le Serveur d'Autorisation confirme l'authenticitĂ© du Client.
Mais ce n'est pas tout⊠Veuillez accueillir OpenID Connect !
OAuth 2.0 est conçu uniquement pour l'autorisation â pour fournir l'accĂšs aux donnĂ©es et aux fonctionnalitĂ©s d'une application Ă une autre. (OIDC) â est une couche mince au-dessus d'OAuth 2.0, ajoutant des informations sur la connexion et le profil de l'utilisateur qui s'est connectĂ© au compte. L'organisation de la session de connexion est souvent appelĂ©e authentification [authentication], et les informations sur l'utilisateur connectĂ© (c'est-Ă -dire sur PropriĂ©taire de la ressourceâlui), â donnĂ©es personnelles [identity]. Si le Serveur d'Autorisation prend en charge OIDC, il est parfois appelĂ© fournisseur d'identitĂ© [identity provider], car il fournit Clientâlui des informations sur PropriĂ©taire de la ressourceâe.
OpenID Connect permet d'implĂ©menter des scĂ©narios oĂč une seule connexion peut ĂȘtre utilisĂ©e dans plusieurs applications, â cette approche est Ă©galement connue sous le nom de single sign-on (SSO). Par exemple, une application peut prendre en charge l'intĂ©gration SSO avec des rĂ©seaux sociaux comme Facebook ou Twitter, permettant aux utilisateurs d'utiliser un compte qu'ils possĂšdent dĂ©jĂ et qu'ils prĂ©fĂšrent utiliser.

Le flux OpenID Connect ressemble Ă celui d'OAuth. La seule diffĂ©rence est que dans la demande initiale, l'espace spĂ©cifique utilisĂ© est openid, â et Client il obtient finalement Jeton d'AccĂšs, et via le ID Token.

Tout comme dans le flux OAuth, Jeton d'AccĂšs dans OpenID Connect â c'est une certaine valeur, incomprĂ©hensible pour Clientâlui. Du point de vue de Clientâlui Jeton d'AccĂšs reprĂ©sente une chaĂźne de caractĂšres qui est transmise avec chaque demande Ă Serveur de Ressourcesâlui, et celui-ci dĂ©termine si le jeton est valide. le ID Token reprĂ©sente quelque chose de complĂštement diffĂ©rent.
ID Token â c'est un JWT
le ID Token â c'est une chaĂźne de caractĂšres formatĂ©e d'une maniĂšre particuliĂšre, connue sous le nom de JSON Web Token ou JWT (parfois les jetons JWT sont prononcĂ©s comme « jots »). Pour les observateurs extĂ©rieurs, le JWT peut sembler ĂȘtre une sorte de charabia, mais Client il peut extraire du JWT diverses informations, telles que l'ID, le nom d'utilisateur, l'heure de connexion et la date d'expiration le ID Tokenâa, la prĂ©sence de tentatives d'intervention dans le JWT. Les donnĂ©es Ă l'intĂ©rieur le ID Tokenâa sont appelĂ©es revendications [claims].

Dans le cas de l'OIDC, il existe Ă©galement une mĂ©thode standard par laquelle Client vous pouvez demander des informations supplĂ©mentaires sur l'identitĂ© [identity] Ă partir de Serveur d'Autorisationâa, par exemple, une adresse e-mail, en utilisant Jeton d'AccĂšs.
Des informations supplémentaires sur OAuth et OIDC
Ainsi, nous avons briĂšvement examinĂ© les principes de fonctionnement d'OAuth et d'OIDC. PrĂȘt Ă approfondir ? Voici des ressources supplĂ©mentaires pour en savoir plus sur OAuth 2.0 et OpenID Connect :
Comme d'habitude, n'hésitez pas à commenter. Pour rester informé de nos derniÚres nouveautés, abonnez-vous à et la société Okta pour les développeurs !
P.S. de l'auteur
Lisez aussi dans notre blog :
- «»;
- «»;
- «»;
- «».
Source : habr.com











