Illustrerad guide till OAuth och OpenID Connect

Obs. övers.: I detta fantastiska material frÄn företaget Okta förklaras pÄ ett enkelt och tydligt sÀtt hur OAuth och OIDC (OpenID Connect) fungerar. Dessa kunskaper kommer att vara anvÀndbara för utvecklare, systemadministratörer och Àven "vanliga anvÀndare" av populÀra webbapplikationer, som sannolikt ocksÄ delar kÀnslig information med andra tjÀnster.

I "stenÄldern" av internet var det enkelt att dela information mellan tjÀnster. Du gav bara ditt anvÀndarnamn och lösenord frÄn en tjÀnst till en annan sÄ att den kunde logga in pÄ ditt konto och hÀmta all information den behövde.

Illustrerad guide till OAuth och OpenID Connect
"Ge oss dina bankuppgifter." — "Vi lovar att allt kommer att vara okej med ditt lösenord och dina pengar. Ärligt talat!" *fniss*

GÀrna! Ingen bör nÄgonsin begÀra att en anvÀndare ska dela sitt anvÀndarnamn och lösenord, sina inloggningsuppgifter, med en annan tjÀnst. Det finns ingen garanti för att organisationen bakom denna tjÀnst kommer att lagra uppgifterna sÀkert och inte samla in mer personlig information Àn nödvÀndigt. Det kan verka galet, men vissa applikationer tillÀmpar fortfarande denna praxis!

Idag finns det en enhetlig standard som gör det möjligt för en tjÀnst att sÀkert anvÀnda data frÄn en annan. TyvÀrr anvÀnder sÄdana standarder massor av jargong och termer, vilket gör dem svÄra att förstÄ. Syftet med detta material Àr att, med hjÀlp av enkla bilder, förklara hur de fungerar (Tycker du mina bilder liknar barnslig klotter? Jaha dÄ!).

Illustrerad guide till OAuth och OpenID Connect

För övrigt finns denna vÀgledning ocksÄ tillgÀnglig i videoformat:

Spela video

Mina damer och herrar, hÀr Àr: OAuth 2.0

OAuth 2.0 — en sĂ€kerhetsstandard som möjliggör för en applikation att fĂ„ tillstĂ„nd att fĂ„ Ă„tkomst till information i en annan applikation. Sekvensen av Ă„tgĂ€rder för att ge tillstĂ„nd [permission] (eller samtycke [consent]) kallas ofta auktorization [authorization] eller till och med delegerad auktorisation [delegated authorization]. Med hjĂ€lp av denna standard tillĂ„ter du en applikation att lĂ€sa data eller anvĂ€nda funktioner frĂ„n en annan applikation i ditt namn utan att ge den ditt lösenord. Klart!

Som exempel, tÀnk dig att du upptÀckte en webbplats med namnet "Dagens hemska ordvits" [Terrible Pun of the Day] och bestÀmde er för att registrera er dÀr för att dagligen fÄ kalas-skÀmt som textmeddelanden pÄ telefonen. Ni gillade verkligen webbplatsen och bestÀmde er för att dela den med alla bekanta. FörskrÀckliga kalas-skÀmt Àr ju nÄgot alla gillar, eller hur?

Illustrerad guide till OAuth och OpenID Connect
«Dagens misslyckade skĂ€mt: Har ni hört om killen som förlorade vĂ€nstra halvan av sin kropp? Nu har han alltid rĂ€tt!» (översĂ€ttningen Ă€r ungefĂ€rlig, eftersom det finns ett eget ordspel i originalet — anm. övers.)

Det Ă€r uppenbart att det inte Ă€r ett alternativ att skriva till varje person frĂ„n kontaktlistan. Och om ni Ă€r Ă„tminstone lite lik mig, kommer ni att göra vad som helst för att undvika extra arbete. Lyckligtvis kan Terrible Pun of the Day sjĂ€lv bjuda in alla era vĂ€nner! Ni behöver bara ge den tillgĂ„ng till e-postkontakterna — webbplatsen skickar automatiskt inbjudningar till dem (OAuth Ă€r fantastiskt)!

Illustrerad guide till OAuth och OpenID Connect
«Alla Ă€lskar skĂ€mt! — Har ni redan loggat in? — Vill ni ge Terrible Pun of the Day tillgĂ„ng till er kontaktlista? — Tack! Nu kommer vi att skicka pĂ„minnelser varje dag till alla ni kĂ€nner, till tidens Ă€nde! Ni Ă€r den bĂ€sta vĂ€nnen!»

  1. VÀlj er e-posttjÀnst.
  2. Om sÄ behövs, gÄ till e-postsidan och logga in pÄ kontot.
  3. Ge Terrible Pun of the Day tillstÄnd att fÄ tillgÄng till kontakterna.
  4. GĂ„ tillbaka till webbplatsen Terrible Pun of the Day.

Om ni Àndrar er, erbjuder appar som anvÀnder OAuth ocksÄ ett sÀtt att Äterkalla Ätkomst. Om ni bestÀmmer er för att ni inte lÀngre vill dela kontakterna med Terrible Pun of the Day, kan ni gÄ till e-postsidan och ta bort webbplatsen för skÀmt frÄn listan över auktoriserade appar.

OAuth-flöde

Vi har just gÄtt igenom vad som vanligen kallas ett flöde [flow] OAuth. I vÄrt exempel bestÄr detta flöde av synliga steg samt flera osynliga steg, dÀr tvÄ tjÀnster kommer överens om en sÀker informationsutbyte. I det tidigare exemplet med Terrible Pun of the Day anvÀnds den mest förekommande OAuth 2.0-flödet, kÀnt som flödet "med auktoriseringskod". [«authorization code» flow].

Innan vi dyker djupare in i hur OAuth fungerar, lÄt oss prata om betydelsen av vissa termer:

  • ResursĂ€gare:

    Illustrerad guide till OAuth och OpenID Connect

    Det Àr ni! Ni Àger era inloggningsuppgifter, era data och kontrollerar alla ÄtgÀrder som kan utföras med era konton.

  • Client:

    Illustrerad guide till OAuth och OpenID Connect

    En applikation (t.ex. tjĂ€nsten Terrible Pun of the Day) som vill fĂ„ Ă„tkomst eller utföra vissa Ă„tgĂ€rder Ă„ ResursĂ€gare’s vĂ€gnar.

  • Auktoriseringsserver:

    Illustrerad guide till OAuth och OpenID Connect

    En applikation som vet ResursĂ€gare’s och dĂ€r ResursĂ€gare’s redan har ett konto.

  • Resurserver:

    Illustrerad guide till OAuth och OpenID Connect

    Ett programgrĂ€nssnitt (API) eller tjĂ€nst som Client vill anvĂ€nda Ă„ ResursĂ€gare’s vĂ€gnar.

  • Omdirigerings-URI:

    Illustrerad guide till OAuth och OpenID Connect

    LĂ€nken som Auktoriseringsserver omdirigerar ResursĂ€gare’s efter att ha gett tillstĂ„nd Clienttill. Ibland kallas den "ÅtervĂ€ndande URL" ("Callback URL").

  • Svarstyp:

    Illustrerad guide till OAuth och OpenID Connect

    Typ av information som förvĂ€ntas fĂ„s Client. Den vanligaste Svarstyp’n Ă€r en kod, det vill sĂ€ga Client rĂ€knar med att fĂ„ Auktoriseringskod.

  • OmfĂ„ng:

    Illustrerad guide till OAuth och OpenID Connect

    Detta Ă€r en detaljerad beskrivning av de behörigheter som krĂ€vs av Client’s, sĂ„som Ă„tkomst till data eller utförande av specifika Ă„tgĂ€rder.

  • Samtycke:

    Illustrerad guide till OAuth och OpenID Connect

    Auktoriseringsserver tar OmfĂ„ng, begĂ€rd av Client’s, och frĂ„gar ResursĂ€gare’s om denne Ă€r villig att ge Client’s motsvarande behörigheter.

  • Klient-ID:

    Illustrerad guide till OAuth och OpenID Connect

    Detta ID anvĂ€nds för att identifiera Client’s pĂ„ Auktoriseringsserver’s.

  • Klienthemlighet:

    Illustrerad guide till OAuth och OpenID Connect

    Detta Ă€r ett lösenord som endast Ă€r kĂ€nt av Client’s och Auktoriseringsserver’s. Det möjliggör att de konfidentiellt kan dela information.

  • Auktoriseringskod:

    Illustrerad guide till OAuth och OpenID Connect

    En tillfĂ€llig kod med en kort tidsperiod som Client skydd mot DDoS-attacker Auktoriseringsserver’s i utbyte mot Åtkomsttoken.

  • Åtkomsttoken:

    Illustrerad guide till OAuth och OpenID Connect

    En nyckel som klienten kommer att anvĂ€nda för att kommunicera med Resurserver’s. En typ av tagg eller nyckelkort som ger Client’s behörighet att begĂ€ra data eller utföra Ă„tgĂ€rder pĂ„ Resurserver’s Ă„ dina vĂ€gnar.

AnmÀrkning: ibland Àr auktoriseringsserver och resurserver samma server. Men i vissa fall kan de vara olika servrar, Àven om de inte tillhör samma organisation. Till exempel kan auktoriseringsservern vara en tredjepartstjÀnst som resurservern har förtroende för.

Nu nÀr vi har bekantat oss med de grundlÀggande begreppen i OAuth 2.0, lÄt oss gÄ tillbaka till vÄrt exempel och noggrant titta pÄ vad som hÀnder i OAuth-flödet.

Illustrerad guide till OAuth och OpenID Connect

  1. Du, ResursĂ€gare, önskar att ge tjĂ€nsten Terrible Pun of the Day (Client’s) Ă„tkomst till dina kontakter sĂ„ att den kan skicka inbjudningar till alla dina vĂ€nner.
  2. Client omdirigerar webblĂ€saren till sidan Auktoriseringsserver’s och inkluderar i förfrĂ„gan Klient-ID, Omdirigerings-URI, Svarstyp och en eller flera OmfĂ„ng (behörigheter) som den behöver.
  3. Auktoriseringsserver verifierar dig, och ber vid behov om anvÀndarnamn och lösenord.
  4. Auktoriseringsserver visar ett formulĂ€r Samtycke (bekrĂ€ftelse) med en lista över alla OmfĂ„ng, begĂ€rd av Client’s. Du godkĂ€nner eller nekar.
  5. Auktoriseringsserver omdirigerar dig till webbplatsen Client’s, med anvĂ€ndning av Omdirigerings-URI tillsammans med Auktoriseringskod (auktoriseringskoden).
  6. Client kommunicerar direkt med Auktoriseringsserver’s (via webblĂ€saren) ResursĂ€gare‘a) och sĂ€kert skickar Klient-ID, Klienthemlighet och Auktoriseringskod.
  7. Auktoriseringsserver kontrollerar data och svarar med Åtkomsttoken‘en (Ă„tkomsttoken).
  8. Nu Client kan anvĂ€nda Åtkomsttoken för att skicka en begĂ€ran om Resurserver med syfte att fĂ„ en lista över kontakter.

Client ID och Secret

LÄngt innan du gav Terrible Pun of the Day tillgÄng till kontakterna, hade Client och Authorization Server etablerat ett samarbete. Authorization Server genererade Client ID och Client Secret (ibland kallade App ID och App Secret) och skickade dem till Client för vidare interaktion inom ramen för OAuth.

Illustrerad guide till OAuth och OpenID Connect
«— Hej! Jag skulle vilja arbeta med dig! — Ingen fara! HĂ€r Ă€r dina Client ID och Secret!»

Namnet antyder att Client Secret bör hÄllas hemligt, sÄ att endast Client och Authorization Server kÀnner till det. Det Àr ju med hjÀlp av det som Authorization Server bekrÀftar Àktheten av Client.

Men det Àr inte allt
 VÀnligen vÀlkomna OpenID Connect!

OAuth 2.0 har utvecklats enbart för autentisering — för att ge Ă„tkomst till data och funktioner frĂ„n en applikation till en annan. OpenID Connect (OIDC) — Ă€r ett tunt lager ovanpĂ„ OAuth 2.0 som lĂ€gger till information om inloggning och profilen för den anvĂ€ndare som har loggat in. Organisationen av inloggningssessioner kallas ofta för autentisering [authentication], medan information om anvĂ€ndaren som loggade in (dvs. om ResursĂ€gare‘n), — personuppgifter [identity]. Om Authorization Server stöder OIDC kallas den ibland för identitetsleverantör [identity provider], eftersom den tillhandahĂ„ller Client‘n information om ResursĂ€gare’s.

OpenID Connect gör det möjligt att implementera scenarier dĂ€r en enda inloggning kan anvĂ€ndas i flera applikationer — denna metod Ă€r ocksĂ„ kĂ€nd som single sign-on (SSO). Till exempel kan en applikation stödja SSO-integration med sociala nĂ€tverk som Facebook eller Twitter, vilket möjliggör för anvĂ€ndarna att anvĂ€nda ett konto som de redan har och som de föredrar att anvĂ€nda.

Illustrerad guide till OAuth och OpenID Connect

Flödet (flow) för OpenID Connect ser likadant ut som i fallet med OAuth. Den enda skillnaden Ă€r att i den första begĂ€ran Ă€r den specifika scope som anvĂ€nds — openid, — och Client i slutĂ€ndan fĂ„r som Åtkomsttoken, sĂ„vĂ€l som ID Token..

Illustrerad guide till OAuth och OpenID Connect

Precis som i OAuth-flödet Ă€r Åtkomsttoken i OpenID Connect — detta Ă€r ett vĂ€rde som inte Ă€r begripligt Client‘n. UtifrĂ„n Client‘n Åtkomsttoken representerar en strĂ€ng av tecken som skickas med varje begĂ€ran till Resurserver‘n, och den avgör om token Ă€r giltig. ID Token. representerar nĂ„got helt annat.

ID Token Àr en JWT

ID Token. — det Ă€r en specifikt formaterad strĂ€ng av tecken, kĂ€nd som JSON Web Token eller JWT. (ibland uttalas JWT som «jots»). För utomstĂ„ende observatörer kan JWT verka som en obegriplig samling ord, men Client kan extrahera olika informationer frĂ„n JWT, sĂ„som ID, anvĂ€ndarnamn, inloggningstid, utgĂ„ngstid ID Token.och eventuella försök till intrĂ„ng i JWT. Data inuti ID Token.kallas pĂ„stĂ„enden [claims].

Illustrerad guide till OAuth och OpenID Connect

Vid OIDC finns det ocksĂ„ en standardmetod genom vilken Client man kan begĂ€ra mer information om identiteten [identity] frĂ„n Auktoriseringsservertill exempel e-postadress, med hjĂ€lp av Åtkomsttoken.

Ytterligare information om OAuth och OIDC

SÄ vi har kortfattat gÄtt igenom grunderna för OAuth och OIDC. Redo att dyka djupare? HÀr Àr fler resurser som hjÀlper dig att lÀra dig mer om OAuth 2.0 och OpenID Connect:

Som alltid, tveka inte att kommentera. För att hÄlla dig uppdaterad om vÄra senaste nyheter, följ Twitter och YouTube Okta för utvecklare!

P.S. frÄn översÀttaren

LÀs Àven i vÄr blogg:

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster