Illustreret guide til OAuth og OpenID Connect

Bem. overs.: I dette fantastiske materiale fra Okta forklares principperne for, hvordan OAuth og OIDC (OpenID Connect) fungerer enkelt og tydeligt. Denne viden vil vÊre nyttig for udviklere, systemadministratorer og endda 'almindelige brugere' af populÊre webapplikationer, der sandsynligvis ogsÄ deler fÞlsomme data med andre tjenester.

I internettets 'stenalder' var det nemt at dele information mellem tjenester. Man gav blot ens login og adgangskode fra én tjeneste til en anden, sÄ den kunne logge ind pÄ ens konto og fÄ de oplysninger, den havde brug for.

Illustreret guide til OAuth og OpenID Connect
"Giv os dit bankkonto. " - "Vi lover, at alt med adgangskoden og pengene vil vĂŠre i orden. Vi er helt ĂŠrlige!" *hi-hi*

SkrÊmmende! Ingen mÄ nogensinde krÊve, at brugeren deler sit login og adgangskode, hans kontooplysninger, med en anden tjeneste. Der er ingen garanti for, at organisationen bag denne tjeneste vil opbevare dataene sikkert og ikke indsamle mere personligt information, end nÞdvendigt. Det kan virke vildt, men nogle apps anvender stadig denne praksis!

I dag er der en fÊlles standard, der gÞr det muligt for én tjeneste sikkert at fÄ adgang til data fra en anden. DesvÊrre bruger sÄdanne standarder en masse jargon og termer, hvilket komplicerer forstÄelsen af dem. MÄlet med dette materiale er at forklare, hvordan de virker med enkle illustrationer (Mener du mine tegninger ligner et barns kruseduller? NÄ, sÄ mÄ det vÊre!).

Illustreret guide til OAuth og OpenID Connect

For resten er denne guide ogsÄ tilgÊngelig i videoformat:

Afspil video

Mine damer og herrer, mĂžd: OAuth 2.0

OAuth 2.0 — er en sikkerhedsstandard, der giver Ă©n applikation tilladelse til at fĂ„ adgang til oplysninger i en anden applikation. FremgangsmĂ„den for at give tilladelse [permission] (eller samtykke [consent]) kaldes ofte autorisation [authorization] eller endda delegeret autorisation [delegated authorization]. Denne standard gĂžr det muligt for dig at lade en applikation fĂ„ adgang til data eller bruge funktioner fra en anden applikation i dit navn, uden at du behĂžver at give den dit password. Cool!

Som eksempel kan vi forestille os, at du har fundet en hjemmeside med titlen "Dagens dÄrlige ordspil" [Terrible Pun of the Day] og registreret dig pÄ det, for at modtage ordspil som tekstbeskeder pÄ din telefon hver dag. Du har virkelig nydt websitet og besluttet dig for at dele det med alle dine bekendte. For frygtelige ordspil kan alle lide, ikke sandt?

Illustreret guide til OAuth og OpenID Connect
„Dagens uheldige ordspil: Har du hþrt om fyren, der mistede den venstre halvdel af sin krop? Nu er han altid hþjre!” (overséttelsen er omtrentlig, da der i originalen er flere ordspil — bem. overs.)

Det er klart, at det ikke er en mulighed at skrive til hver enkelt person i din kontaktliste. Og hvis du er bare en smule ligesom mig, vil du gĂžre alt for at undgĂ„ unĂždvendigt arbejde. Heldigvis kan Terrible Pun of the Day selv invitere alle dine venner! Du skal bare give den adgang til din e-mail kontaktliste — siden sender automatisk invitationerne (OAuth styrer)!

Illustreret guide til OAuth og OpenID Connect
„Alle elsker ordspil! — Er du allerede logget ind? — Vil du give Terrible Pun of the Day adgang til din kontaktliste? — Tak! Nu vil vi hver dag sende pĂ„mindelser til alle, du kender, indtil verdens ende! Du er den bedste ven!”

  1. VĂŠlg din e-mail-service.
  2. Hvis nÞdvendigt, gÄ til e-mail-websitet og log ind pÄ din konto.
  3. Giv Terrible Pun of the Day tilladelse til at fÄ adgang til dine kontakter.
  4. Vend tilbage til Terrible Pun of the Day-siden.

Hvis du ombestemmer dig, giver applikationer, der bruger OAuth, ogsÄ en mÄde at tilbagekalde adgangen pÄ. Hvis du beslutter, at du ikke lÊngere Þnsker at dele dine kontakter med Terrible Pun of the Day, kan du gÄ til e-mail-websitet og fjerne ordspilssitet fra listen over godkendte applikationer.

OAuth-strĂžmmen

Vi har netop gennemgĂ„et, hvad der normalt kaldes strömmen [flow] OAuth. I vores eksempel bestĂ„r denne strĂžm af synlige trin samt flere usynlige trin, hvor to tjenester indgĂ„r en aftale om sikker udveksling af oplysninger. I det forrige eksempel med Terrible Pun of the Day bruges den mest almindelige OAuth 2.0 strĂžm, der er kendt som 'authorization code' strĂžmmen. [„authorization code” flow].

FĂžr vi dykker ned i detaljerne om, hvordan OAuth fungerer, lad os tale om betydningen af nogle termer:

  • Resource Owner:

    Illustreret guide til OAuth og OpenID Connect

    Det er dig! Du ejer dine legitimationsoplysninger, dine data og styrer alle handlinger, der kan udfĂžres med dine konti.

  • Client:

    Illustreret guide til OAuth og OpenID Connect

    En applikation (for eksempel tjenesten Terrible Pun of the Day), der Ăžnsker at fĂ„ adgang eller udfĂžre bestemte handlinger pĂ„ vegne af Resource Owner‘a.

  • Autoriseringsserver:

    Illustreret guide til OAuth og OpenID Connect

    En applikation, der ved Resource Owner‘a og hvor Resource Owner‘a allerede har en konto.

  • Ressourceserver:

    Illustreret guide til OAuth og OpenID Connect

    Et programinterface (API) eller en tjeneste, som Client Ăžnsker at bruge pĂ„ vegne af Resource Owner‘a.

  • Redirect URI:

    Illustreret guide til OAuth og OpenID Connect

    Et link, som Autoriseringsserver omdirigerer Resource Owner‘a efter at have givet tilladelse til Client‘u. Nogle gange kaldes dette 'Return URL' ('Callback URL').

  • Respons Type:

    Illustreret guide til OAuth og OpenID Connect

    Den type information, som man forventer at modtage Client. Den mest almindelige Respons Type‘a er koden, dvs. Client forventer at modtage Autoriseringskode.

  • Omfang:

    Illustreret guide til OAuth og OpenID Connect

    Dette er en detaljeret beskrivelse af de tilladelser, der krĂŠves Client‘u, sĂ„som adgang til data eller udfĂžrelse af bestemte handlinger.

  • Samtykke:

    Illustreret guide til OAuth og OpenID Connect

    Autoriseringsserver indhenter Omfang, der anmodes om af, og spþrger Client‘a, om de er klar til at give Resource Owner‘u de relevante tilladelser. ClientKlient ID

  • Denne ID bruges til at identificere:

    Illustreret guide til OAuth og OpenID Connect

    ‘a pĂ„ Client‘e. AutoriseringsserverKlienthemmelighed

  • Dette er et kodeord, som kun er kendt af:

    Illustreret guide til OAuth og OpenID Connect

    ‘u og Client‘u. Det giver dem mulighed for at udveksle information fortroligt. AutoriseringsserverEn midlertidig kode med en kort gyldighedsperiode, som

  • Autoriseringskode:

    Illustreret guide til OAuth og OpenID Connect

    ‘u i bytte for Client tilbyder AutoriseringsserverAdgangstoken En nþgle, som klienten vil bruge til at kommunikere med.

  • En nĂžgle, som klienten vil bruge til at kommunikere med:

    Illustreret guide til OAuth og OpenID Connect

    ‘om. En slags badge eller nĂžglekort, der giver Ressourceserver‘u tilladelse til at anmode om data eller udfĂžre handlinger pĂ„ Client‘e pĂ„ dine vegne. Ressourceserver: nogle gange er Autoriseringsserveren og Ressourceserveren den samme server. Men i nogle tilfĂŠlde kan de vĂŠre forskellige servere, som ikke nĂždvendigvis tilhĂžrer den samme organisation. For eksempel kan Autoriseringsserveren vĂŠre en tredjepartstjeneste, som Ressourceserveren har tillid til.

BemÊrkNu hvor vi har sat os ind i de grundlÊggende begreber i OAuth 2.0, lad os vende tilbage til vores eksempel og se nÊrmere pÄ, hvad der sker i OAuth-strÞmmen.

Du,

Illustreret guide til OAuth og OpenID Connect

  1. , Ăžnsker at give tjenesten Terrible Pun of the Day ( Resource Owner‘u) adgang til dine kontakter, sĂ„ den kan sende invitationer til alle dine venner.Clientomdirigerer browseren til siden
  2. Client ‘a og inkluderer i anmodningen Autoriseringsserverog en eller flere Denne ID bruges til at identificere, Redirect URI, Respons Type (tilladelser), som den har brug for. Omfang, der anmodes om af verificerer dig ved eventuelt at bede om brugernavn og adgangskode.
  3. Autoriseringsserver prĂŠsenterer et
  4. Autoriseringsserver (bekréftelses)skema med en liste over alle Samtykke , der anmodes om af Omfang, der anmodes om af‘om. Du accepterer eller afviser. Clientomdirigerer dig til hjemmesiden
  5. Autoriseringsserver ‘a, ved at bruge Client(autoriseringskoden). Redirect URI sammen med Autoriseringskode kontakter direkte
  6. Client ‘om (uden om browseren Autoriseringsserver‘a) og sender sikkert. Resource Ownerog) og sender sikkert Denne ID bruges til at identificere, Dette er et kodeord, som kun er kendt af og Autoriseringskode.
  7. Autoriseringsserver tjekker data og svarer med En nþgle, som klienten vil bruge til at kommunikere med‘en (adgangstoken).
  8. Now Client kan bruges En nÞgle, som klienten vil bruge til at kommunikere med til at sende en anmodning om Ressourceserver for at fÄ en liste over kontakter.

Client ID og Secret

Lang tid fþr du gav Terrible Pun of the Day adgang til kontakterne, etablerede Client og Authorization Server et samarbejde. Authorization Server genererede Client ID og Client Secret (nogle gange kaldet App ID og App Secret) og sendte dem til Client’en for yderligere interaktion inden for OAuth.

Illustreret guide til OAuth og OpenID Connect
«— Hej! Jeg vil gerne arbejde sammen med dig! — Det er ikke noget problem! Her er dine Client ID og Secret!»

Navnet antyder, at Client Secret skal holdes hemmeligt, sĂ„ kun Client og Authorization Server kender det. For det er med hjĂŠlp fra det, at Authorization Server bekrĂŠfter ĂŠgtheden af Client’en.

Men det er ikke alt
 Venligst byd OpenID Connect velkommen!

OAuth 2.0 er udelukkende designet til autorisation — til at give adgang til data og funktioner fra Ă©n applikation til en anden. OpenID Connect (OIDC) — er et tyndt lag over OAuth 2.0, der tilfĂžjer log-in og profiloplysninger om den bruger, der er logget ind. Organiseringen af log-in sessionen kaldes ofte autentificering [authentication], mens oplysningerne om den bruger, der er logget ind (dvs. om Resource Owner‘en), — personlige data [identity]. Hvis Authorization Server understĂžtter OIDC, kaldes den nogle gange identitetsudbyder [identity provider], da den giver Client‘en oplysninger om Resource OwnerKlienthemmelighed

OpenID Connect muliggĂžr implementeringen af scenarier, hvor enkeltlog-in kan anvendes pĂ„ mange applikationer, — denne tilgang er ogsĂ„ kendt som single sign-on (SSO). For eksempel kan en applikation understĂžtte SSO-integration med sociale netvĂŠrk som Facebook eller Twitter, hvilket giver brugerne mulighed for at bruge en konto, de allerede har og foretrĂŠkker.

Illustreret guide til OAuth og OpenID Connect

Flowet (flow) i OpenID Connect ser ligesom OAuth ud. Den eneste forskel er, at i den oprindelige anmodning er den anvendte specifikke scope — openid, — og Client modtager til sidst som En nþgle, som klienten vil bruge til at kommunikere med, og ID Token.

Illustreret guide til OAuth og OpenID Connect

Ligesom i OAuth flowet er En nĂžgle, som klienten vil bruge til at kommunikere med i OpenID Connect — en vĂŠrdi, der ikke er forstĂ„elig for Client‘en. Set fra Client‘s synspunkt En nĂžgle, som klienten vil bruge til at kommunikere med reprĂŠsenterer det en streng af tegn, der sendes med hver anmodning til Ressourceserver‘en, og den afgĂžr, om tokenet er gyldigt. ID Token reprĂŠsenterer noget andet.

ID Token er en JWT

ID Token — det er en sĂŠrligt formateret streng af tegn, kendt som JSON Web Token eller JWT (nogle gange udtales JWT som «jots»). For external observers, JWT may seem like incomprehensible gibberish; however, Client one can extract various information from the JWT, such as ID, username, login time, and expiration date, ID Tokenas well as any attempts to tamper with the JWT. The data inside ID Tokenis called claims [claims].

Illustreret guide til OAuth og OpenID Connect

In the case of OIDC, there is a standard way for which Client it can request additional information about the identity, [identity] fra Autoriseringsserversuch as the email address, using En nĂžgle, som klienten vil bruge til at kommunikere med.

Additional information about OAuth and OIDC

So, we have briefly looked at the principles of OAuth and OIDC. Ready to dig deeper? Here are additional resources to help you learn more about OAuth 2.0 and OpenID Connect:

As usual, feel free to comment. To stay updated on our latest news, subscribe to Twitter og YouTube Okta for Developers!

P.S. fra oversĂŠtteren

LÊs ogsÄ pÄ vores blog:

Kilde: habr.com

KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster