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.
"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!).
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?
„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)!
„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ľ!"
Vyberte si e-mailovú službu.
V prípade potreby prejdite na poštovú stránku a prihláste sa do svojho účtu.
Dajte Terrible Pun of the Day povolenie na prístup k vašim kontaktom.
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:
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:
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:
Aplikácia, ktorá vie Vlastník zdroja'a v ktorom u Vlastník zdroja'a už mám účet.
zdrojový server:
Aplikačné programové rozhranie (API) alebo služba, ktorá Zákazník chce použiť v mene Vlastník zdroja'a.
Presmerovať URI:
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:
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:
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:
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:
Toto ID sa používa na identifikáciu Zákazník'a on Autorizačný server'e.
Tajomstvo klienta:
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:
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:
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.
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.
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.
Autorizačný server overí vás a v prípade potreby vás požiada o používateľské meno a heslo.
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.
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).
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.
Autorizačný server skontroluje údaje a odpovie Prístupový token'om (prístupový token).
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.
"- 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ú.
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.
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].
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: