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.

"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!).

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

Mine damer og herrer, mĂžd: 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?

â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)!

â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!â
- VĂŠlg din e-mail-service.
- Hvis nÞdvendigt, gÄ til e-mail-websitet og log ind pÄ din konto.
- Giv Terrible Pun of the Day tilladelse til at fÄ adgang til dine kontakter.
- 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:

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

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:

En applikation, der ved Resource Ownerâa og hvor Resource Ownerâa allerede har en konto. - Ressourceserver:

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

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:

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

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:

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:

âa pĂ„ Clientâe. AutoriseringsserverKlienthemmelighed - Dette er et kodeord, som kun er kendt af:

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

â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:

â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,

- , Ăž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
- 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.
- Autoriseringsserver prĂŠsenterer et
- 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
- Autoriseringsserver âa, ved at bruge Client(autoriseringskoden). Redirect URI sammen med Autoriseringskode kontakter direkte
- 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.
- Autoriseringsserver tjekker data og svarer med En nĂžgle, som klienten vil bruge til at kommunikere medâen (adgangstoken).
- 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.

«â 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. (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.

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.

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

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 og Okta for Developers!
P.S. fra oversĂŠtteren
LÊs ogsÄ pÄ vores blog:
- «»;
- «»;
- «»;
- «».
Kilde: habr.com











