Ilustrovaný sprievodca OAuth a OpenID Connect

Poznámka. preklad.: Tento skvelý článok od Okta vysvetľuje, ako fungujú OAuth a OIDC (OpenID Connect) jednoduchým a jasným spôsobom. Tieto znalosti budú užitočné pre vývojárov, systémových administrátorov a dokonca aj „bežných používateľov“ populárnych webových aplikácií, ktoré si s najväčšou pravdepodobnosťou tiež vymieňajú dôverné údaje s inými službami.

V dobe kamennej internetu bolo zdieľanie informácií medzi službami jednoduché. Jednoducho ste dali svoje prihlasovacie meno a heslo z jednej služby do druhej, aby zadal váš účet a dostal všetky potrebné informácie.

Ilustrovaný sprievodca OAuth a OpenID Connect
"Dajte mi svoj bankový účet." „Sľubujeme, že s heslom a peniazmi bude všetko v poriadku. To je úprimné, úprimné!" *hee hee*

Hrôza! Nikto by nikdy nemal vyžadovať, aby používateľ zdieľal používateľské meno a heslo, poverenia, s inou službou. Neexistuje žiadna záruka, že organizácia stojaca za touto službou bude uchovávať údaje v bezpečí a nebude zhromažďovať viac osobných informácií, ako je potrebné. Môže to znieť šialene, ale niektoré aplikácie túto prax stále používajú!

Dnes existuje jeden štandard, ktorý umožňuje jednej službe bezpečne používať údaje inej. Bohužiaľ, takéto normy používajú veľa žargónu a výrazov, čo komplikuje ich pochopenie. Účelom tohto materiálu je vysvetliť, ako fungujú pomocou jednoduchých ilustrácií (Myslíte si, že moje kresby pripomínajú detské mazanice? No dobre!).

Ilustrovaný sprievodca OAuth a OpenID Connect

Mimochodom, táto príručka je k dispozícii aj vo formáte videa:

Dámy a páni, vitajte: OAuth 2.0

OAuth 2.0 je bezpečnostný štandard, ktorý umožňuje jednej aplikácii získať povolenie na prístup k informáciám v inej aplikácii. Postupnosť krokov na vydanie povolenia [povolenie] (Alebo súhlas [súhlas]) často volajú autorizáciu [oprávnenie] alebo delegované oprávnenie [delegované oprávnenie]. Pomocou tohto štandardu umožňujete aplikácii čítať údaje alebo používať funkcie inej aplikácie vo vašom mene bez toho, aby ste jej poskytli svoje heslo. Trieda!

Povedzme napríklad, že objavíte stránku s názvom „Nešťastná hračka dňa“ [Strašná slovná hračka dňa] a rozhodol sa na ňom zaregistrovať, aby mohol denne dostávať slovné hry vo forme textových správ na telefón. Stránka sa vám veľmi páčila a rozhodli ste sa ju zdieľať so všetkými svojimi priateľmi. Koniec koncov, každý má rád strašidelné slovné hry, však?

Ilustrovaný sprievodca OAuth a OpenID Connect
„Nešťastná slovná hračka dňa: Počuli ste o mužovi, ktorý prišiel o ľavú polovicu tela? Teraz má vždy pravdu!" (približný preklad, lebo originál má svoju slovnú hračku - cca prekl.)

Je jasné, že písanie každej osobe zo zoznamu kontaktov nie je možné. A ak ste čo i len trochu ako ja, urobíte všetko preto, aby ste sa vyhli zbytočnej práci. Našťastie môže Terrible Pun of the Day pozvať všetkých vašich priateľov sama! Ak to chcete urobiť, stačí otvoriť prístup k e-mailu vašich kontaktov - samotná stránka im pošle pozvánky (pravidlá OAuth)!

Ilustrovaný sprievodca OAuth a OpenID Connect
„Každý má rád slovné hračky! - Už prihlásený? „Chceli by ste povoliť webovej stránke Terrible Pun of the Day prístup k vášmu zoznamu kontaktov? - Ďakujem! Odteraz budeme posielať pripomienky každý deň každému, koho poznáte, až do skončenia vekov! Si najlepší priateľ!"

  1. Vyberte si e-mailovú službu.
  2. V prípade potreby prejdite na poštovú stránku a prihláste sa do svojho účtu.
  3. Dajte Terrible Pun of the Day povolenie na prístup k vašim kontaktom.
  4. Vráťte sa na stránku Terrible Pun of the Day.

V prípade, že zmeníte názor, aplikácie používajúce protokol OAuth tiež poskytujú spôsob, ako zrušiť prístup. Keď sa rozhodnete, že už viac nechcete zdieľať kontakty s Terrible Pun of the Day, môžete prejsť na poštovú stránku a odstrániť túto stránku zo zoznamu autorizovaných aplikácií.

Tok OAuth

Práve sme prešli tým, čo sa zvyčajne nazýva tok [tok] OAuth. V našom príklade tento tok pozostáva z viditeľných krokov, ako aj niekoľkých neviditeľných krokov, v ktorých sa dve služby dohodnú na bezpečnej výmene informácií. Predchádzajúci príklad Terrible Pun of the Day používa najbežnejší postup OAuth 2.0, známy ako postup „autorizačného kódu“. [postup "autorizačného kódu"].

Skôr než sa ponoríme do podrobností o tom, ako funguje protokol OAuth, povedzme si o význame niektorých výrazov:

  • Vlastník zdroja:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    To si ty! Vlastníte svoje poverenia, údaje a ovládate všetky aktivity, ktoré sa môžu vykonávať na vašich účtoch.

  • Zákazník:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Aplikácia (napríklad služba Terrible Pun of the Day), ktorá chce získať prístup k určitým akciám alebo ich vykonávať v jej mene Vlastník zdroja'a.

  • Autorizačný server:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Aplikácia, ktorá vie Vlastník zdroja'a v ktorom u Vlastník zdroja'a už mám účet.

  • zdrojový server:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Aplikačné programové rozhranie (API) alebo služba, ktorá Zákazník chce použiť v mene Vlastník zdroja'a.

  • Presmerovať URI:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Odkaz, ktorý Autorizačný server presmeruje Vlastník zdroja„a po udelení povolenia Zákazník'at. Niekedy sa označuje ako „URL spätného volania“.

  • Typ odpovede:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Typ informácií, ktoré sa majú prijať Zákazník. Najčastejšie Typ odpovede'Ohm, to je kód Zákazník očakáva, že dostane autorizačný kód.

  • Rozsah:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Toto je podrobný popis povolení, ktoré sú potrebné Zákazník'y, ako je napríklad prístup k údajom alebo vykonávanie určitých akcií.

  • Súhlas:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Autorizačný server baret Puškohľadyvyžiadané Zákazník'om, a pýta sa Vlastník zdroja'a, je pripravený poskytnúť Zákazník'mať príslušné povolenia.

  • ID klienta:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Toto ID sa používa na identifikáciu Zákazník'a on Autorizačný server'e.

  • Tajomstvo klienta:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Toto je heslo, ktoré je známe Zákazníka Autorizačný server'at. Umožňuje im súkromne zdieľať informácie.

  • autorizačný kód:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Dočasný kód s krátkou dobou platnosti, ktorý Zákazník poskytuje Autorizačný server'y výmenou za Prístupový token.

  • Prístupový token:

    Ilustrovaný sprievodca OAuth a OpenID Connect

    Kľúč, s ktorým bude klient komunikovať zdrojový serverom. Akýsi odznak alebo kľúčová karta, ktorá poskytuje Zákazník„mať povolenie požadovať údaje alebo vykonávať akcie na zdrojový servervo vašom mene.

Poznámka: Niekedy je autorizačný server a server prostriedkov rovnaký server. V niektorých prípadoch však môže ísť o rôzne servery, aj keď nepatria do rovnakej organizácie. Autorizačným serverom môže byť napríklad služba tretej strany, ktorej server zdrojov dôveruje.

Teraz, keď sme pokryli základné koncepty OAuth 2.0, vráťme sa k nášmu príkladu a bližšie sa pozrime na to, čo sa deje v toku OAuth.

Ilustrovaný sprievodca OAuth a OpenID Connect

  1. ty, Vlastník zdroja, chcete poskytovať službu Hrozná hračka dňa (Zákazníky) prístup k vašim kontaktom, aby mohli posielať pozvánky všetkým vašim priateľom.
  2. Zákazník presmeruje prehliadač na stránku Autorizačný server'a zahrnúť do dopytu ID klienta, Presmerovať URI, Typ odpovede a jeden alebo viac Puškohľady (oprávnenia), ktoré potrebuje.
  3. Autorizačný server overí vás a v prípade potreby vás požiada o používateľské meno a heslo.
  4. Autorizačný server zobrazí formulár Súhlas (potvrdenia) so zoznamom všetkých Puškohľadyvyžiadané Zákazníkom. Súhlasíte alebo odmietnete.
  5. Autorizačný server vás presmeruje na stránku Zákazník'a, pomocou Presmerovať URI s autorizačný kód (autorizačný kód).
  6. Zákazník komunikuje priamo s Autorizačný server'ohm (obchádzanie prehliadača Vlastník zdrojaa) a bezpečne odošle ID klienta, Tajomstvo klienta и autorizačný kód.
  7. Autorizačný server skontroluje údaje a odpovie Prístupový token'om (prístupový token).
  8. teraz Zákazník môcť použiť Prístupový token poslať žiadosť zdrojový server získať zoznam kontaktov.

ID klienta a tajomstvo

Dávno predtým, ako ste spoločnosti Terrible Pun of the Day povolili prístup k vašim kontaktom, klient a autorizačný server nadviazali pracovný vzťah. Autorizačný server vygeneroval ID klienta a tajný kľúč klienta (niekedy tzv app ID и Tajomstvo aplikácie) a odoslal ich Klientovi na ďalšiu interakciu v rámci OAuth.

Ilustrovaný sprievodca OAuth a OpenID Connect
"- Ahoj! Chcel by som s vami spolupracovať! - Jasné, nie je problém! Tu je vaše ID klienta a tajomstvo!“

Názov naznačuje, že tajomstvo klienta musí zostať v tajnosti, aby ho poznal iba klient a autorizačný server. Veď práve s jeho pomocou Autorizačný server potvrdzuje pravdivosť Klienta.

Ale to nie je všetko... Privítajte OpenID Connect!

OAuth 2.0 je určený len pre autorizáciu - poskytnúť prístup k údajom a funkciám z jednej aplikácie do druhej. OpenID Connect (OIDC) je tenká vrstva nad OAuth 2.0, ktorá pridáva prihlasovacie údaje a podrobnosti o profile používateľa, ktorý je prihlásený do účtu. Organizácia prihlasovacej relácie sa často označuje ako Overenie [Overenie]a informácie o používateľovi prihlásenom do systému (t.j Vlastník zdroja'e), — osobné údaje [identita]. Ak autorizačný server podporuje OIDC, niekedy sa označuje ako poskytovateľom osobných údajov [poskytovateľ identity]pretože poskytuje Zákazník'mať informácie o Vlastník zdroja'e.

OpenID Connect vám umožňuje implementovať scenáre, v ktorých je možné použiť jedno prihlásenie vo viacerých aplikáciách – tento prístup je známy aj ako jednotné prihlásenie (SSO). Aplikácia môže napríklad podporovať integráciu SSO so sociálnymi sieťami, ako je Facebook alebo Twitter, čo používateľom umožňuje používať účet, ktorý už majú a ktorý radšej používajú.

Ilustrovaný sprievodca OAuth a OpenID Connect

Tok (tok) OpenID Connect vyzerá rovnako ako v prípade OAuth. Jediný rozdiel je v tom, že v primárnej požiadavke je použitý špecifický rozsah openid, - A Zákazník nakoniec dostane ako Prístupový tokenA ID token.

Ilustrovaný sprievodca OAuth a OpenID Connect

Rovnako ako v postupe OAuth, Prístupový token v OpenID Connect je to nejaká hodnota, ktorá nie je jasná Zákazník'at. Z pohľadu Zákazník‘а Prístupový token predstavuje reťazec znakov, ktorý sa odovzdá spolu s každou požiadavkou zdrojový server'y, ktorý určuje, či je token platný. ID token predstavuje úplne inú vec.

ID Token je JWT

ID token je špeciálne naformátovaný reťazec znakov známy ako JSON Web Token alebo JWT (niekedy sa tokeny JWT vyslovujú ako „jots“). Vonkajším pozorovateľom sa JWT môže zdať ako nezrozumiteľný blábol, ale Zákazník dokáže z JWT získať rôzne informácie, ako napríklad ID, používateľské meno, čas prihlásenia, dátum vypršania platnosti ID token„a, prítomnosť pokusov o zasahovanie do JWT. Údaje vo vnútri ID token'a sú volaní aplikácie [nároky].

Ilustrovaný sprievodca OAuth a OpenID Connect

V prípade OIDC existuje aj štandardný spôsob, ktorým Zákazník môže požiadať o dodatočné informácie o jednotlivcovi [identita] od Autorizačný server'a, napríklad e-mailová adresa pomocou Prístupový token.

Získajte viac informácií o protokoloch OAuth a OIDC

Stručne sme teda zhodnotili, ako fungujú OAuth a OIDC. Ste pripravení kopať hlbšie? Tu sú ďalšie zdroje, ktoré vám pomôžu dozvedieť sa viac o OAuth 2.0 a OpenID Connect:

Ako vždy, pokojne komentujte. Ak chcete byť informovaní o našich najnovších správach, prihláste sa na odber Twitter и YouTube Okta pre vývojárov!

PS od prekladateľa

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár