Guide illustré sur OAuth et OpenID Connect

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.

Guide illustré sur OAuth et OpenID Connect
« 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 !).

Guide illustré sur OAuth et OpenID Connect

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

Lire la vidéo

Mesdames et messieurs, voici : OAuth 2.0

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 ?

Guide illustré sur OAuth et OpenID Connect
« 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) !

Guide illustré sur OAuth et OpenID Connect
« 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 ! »

  1. Choisissez votre service de messagerie.
  2. Si nécessaire, rendez-vous sur le site de votre messagerie et connectez-vous à votre compte.
  3. Autorisez le site Terrible Pun of the Day à accéder à vos contacts.
  4. 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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    Cet ID est utilisĂ© pour identifier Client‘a sur Serveur d'Autorisation‘e.

  • Secret Client:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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:

    Guide illustré sur OAuth et OpenID Connect

    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.

Guide illustré sur OAuth et OpenID Connect

  1. 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.
  2. 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.
  3. Serveur d'Autorisation vérifie votre identité, en demandant votre nom d'utilisateur et votre mot de passe si nécessaire.
  4. 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.
  5. Serveur d'Autorisation vous redirige vers le site de Client‘a, en utilisant URI de Redirection avec Code d'Autorisation (le code d'autorisation).
  6. 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.
  7. Serveur d'Autorisation vĂ©rifie les donnĂ©es et rĂ©pond avec Jeton d'AccĂšs‘un (jeton d'accĂšs).
  8. 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.

Guide illustré sur OAuth et OpenID Connect
«— 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. OpenID Connect (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.

Guide illustré sur OAuth et OpenID Connect

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.

Guide illustré sur OAuth et OpenID Connect

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].

Guide illustré sur OAuth et OpenID Connect

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 à Twitter et YouTube la société Okta pour les développeurs !

P.S. de l'auteur

Lisez aussi dans notre blog :

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster