Sobes.tech
Middle

Mis on OAuth autentimine ja kuidas see töötab?

sobes.tech AI

Vastus AI-lt

OAuth on avatud standard autoriseerimiseks. See võimaldab kasutajal anda kolmanda osapoole rakendusele piiratud juurdepääsu oma andmetele, mis asuvad teises teenuses (ressursiserveris), ilma et peaks jagama oma sisselogimisandmeid (kasutajanimi/parool).

OAuth töö põhineb "juurdepääsuteekide" väljastamisel asemel sisselogimisandmete. Tüüpiline voog näeb välja järgmiselt:

  1. Autoriseerimistaotlus: Kasutaja püüab teha toimingu kolmanda osapoole rakenduses, mis nõuab juurdepääsu ressursiserveri andmetele. Rakendus algatab autoriseerimistaotluse ressursiserveri autoriseerimisteenusele.
  2. Suunamine autoriseerimisteenusele: Kasutaja suunatakse autoriseerimisteenuse lehele.
  3. Kasutaja autentimine: Kasutaja autentibub autoriseerimisteenuses (kui ta pole veel autentitud).
  4. Kasutaja nõusolek (Consent): Autoriseerimisteenus küsib kasutajalt luba anda teatud taseme juurdepääs tema andmetele (scopes). Kasutaja nõustub või lükkab taotluse tagasi.
  5. Autoriseerimiskoodi väljastamine: Kui kasutaja nõustub, suunab autoriseerimisteenus kasutaja tagasi kolmanda osapoole rakendusse ja annab "autoriseerimiskoodi".
  6. Koodi vahetamine juurdepääsuteegiga: Kolmanda osapoole rakendus, mis on saanud koodi, saadab otse autoriseerimisteenusele taotluse selle koodi vahetamiseks "juurdepääsuteegi" (Access Token) ja võimalusel "värskendus-teenuse" (Refresh Token) vastu. See taotlus toimub serverite vahel, ilma kasutaja brauseri osaluseta, mis suurendab turvalisust.
  7. Andmetele juurdepääs: Kolmanda osapoole rakendus kasutab saadud juurdepääsuteeki, et teha päringuid ressursiserverile kasutaja nimel. Iga selline päring saadetakse koos tokeniga päisesse.
  8. Tokeni valideerimine: Ressursiserver valideerib juurdepääsuteegi ja kui see on kehtiv ning vastab nõutud scope-idele, annab juurdepääsu andmetele.

OAuth pakub mitmeid vooge (flows), mis sobivad erinevatele stsenaariumidele, näiteks:

  • Authorization Code Flow: Kõige turvalisem, kasutatakse veebirakenduste serveripoolsete osade jaoks.
  • Implicit Flow: Vananenud, kasutati veebirakenduste jaoks ilma serveripoolse osata.
  • Client Credentials Flow: Rakendustele, mis pääsevad juurde oma ressurssidele, mitte kasutaja andmetele.
  • Resource Owner Password Credentials Flow: Ei soovitata, kuna edastab kasutaja sisselogimisandmed rakendusele.

(Näide Authorization Code Flow-st)

C#-s OAuth-i rakendamiseks kasutatakse sageli raamatukogusid, näiteks ASP.NET Core Identity erinevate pakkujate (Google, Facebook jms) toetamiseks või IdentityServer raamatukogusid oma autoriseerimisteenuse loomiseks.