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:
- Autoriseerimistaotlus: Kasutaja püüab teha toimingu kolmanda osapoole rakenduses, mis nõuab juurdepääsu ressursiserveri andmetele. Rakendus algatab autoriseerimistaotluse ressursiserveri autoriseerimisteenusele.
- Suunamine autoriseerimisteenusele: Kasutaja suunatakse autoriseerimisteenuse lehele.
- Kasutaja autentimine: Kasutaja autentibub autoriseerimisteenuses (kui ta pole veel autentitud).
- 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.
- Autoriseerimiskoodi väljastamine: Kui kasutaja nõustub, suunab autoriseerimisteenus kasutaja tagasi kolmanda osapoole rakendusse ja annab "autoriseerimiskoodi".
- 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.
- 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.
- 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.