Vabastage turvaline ja sujuv kasutaja autentimine OAuth2 abil. See juhend annab ĂŒksikasjaliku ĂŒlevaate OAuth2 rakendamisest kolmandate osapoolte juurdepÀÀsuks.
OAuth2 rakendamine: pÔhjalik juhend kolmanda osapoole autentimiseks
TĂ€napĂ€eva omavahel ĂŒhendatud digitaalses maastikus on sujuv ja turvaline kasutaja autentimine ĂŒlimalt tĂ€htis. OAuth2 on tĂ”usnud tööstusstandardi protokolliks, mis vĂ”imaldab kolmandate osapoolte rakendustel pÀÀseda kasutaja ressurssidele teises teenuses, ilma nende mandaate paljastamata. See pĂ”hjalik juhend sĂŒveneb OAuth2 rakendamise keerukustesse, pakkudes arendajatele teadmisi ja praktilisi juhiseid selle vĂ”imsa autoriseerimisraamistiku integreerimiseks oma rakendustesse.
Mis on OAuth2?
OAuth2 (Open Authorization) on autoriseerimisraamistik, mis vÔimaldab kolmanda osapoole rakendusel saada piiratud juurdepÀÀsu HTTP-teenusele kasutaja nimel, korraldades kas kasutaja heakskiidu vÔi vÔimaldades kolmanda osapoole rakendusel saada juurdepÀÀs oma nimel. OAuth2 keskendub kliendi arendaja lihtsusele, pakkudes samal ajal spetsiifilisi autoriseerimisvooge veebirakenduste, töölauarakenduste, mobiiltelefonide ja elutoa seadmete jaoks.
MĂ”elge sellele nagu autoparkimisele. Annate oma autovĂ”tmed (mandaadid) usaldusvÀÀrsele parklale (kolmanda osapoole rakendus), et nad saaksid teie auto parkida (juurdepÀÀs teie ressurssidele), ilma et peaksite neile otse juurdepÀÀsu andma kĂ”igele muule autos. Sa sĂ€ilitad kontrolli ja saad alati oma vĂ”tmed kĂ€tte (juurdepÀÀsu tĂŒhistada).
OAuth2 pÔhikonseptsioonid
OAuth2 pĂ”hikontseptsioonide mĂ”istmine on eduka rakendamise jaoks ĂŒlioluline:
- Ressursi omanik: ĂŒksus, mis on vĂ”imeline andma juurdepÀÀsu kaitstud ressursile. Tavaliselt on see lĂ”ppkasutaja.
- Ressursiserver: server, mis majutab kaitstud ressursse, mis aktsepteerib ja vastab kaitstud ressursitaotlustele, kasutades juurdepÀÀsumÀrke.
- Kliendirakendus: rakendus, mis taotleb juurdepÀÀsu kaitstud ressurssidele ressursi omaniku nimel. See vÔib olla veebirakendus, mobiilirakendus vÔi töölauarakendus.
- Autoriseerimisserver: server, mis vÀljastab juurdepÀÀsumÀrke kliendirakendusele pÀrast ressursi omaniku edukat autentimist ja tema autoriseeringu saamist.
- JuurdepÀÀsumÀrk: mandaat, mis esindab ressursi omaniku poolt kliendirakendusele antud autoriseeringut. Kliendirakendus kasutab seda kaitstud ressurssidele ressursiserveris juurdepÀÀsuks. JuurdepÀÀsumÀrgid on tavaliselt piiratud elueaga.
- VÀrskendusmÀrk: mandaat, mida kasutatakse uue juurdepÀÀsumÀrgi saamiseks, ilma et oleks vaja ressursi omanikult kliendirakendust uuesti autoriseerida. VÀrskendusmÀrgid on tavaliselt pikaealised ja neid tuleks turvaliselt hoida.
- Ulatus: mÀÀratleb kliendirakendusele antud konkreetsed Ôigused. NÀiteks vÔidakse kliendirakendusele anda ainult lugemisÔigus kasutaja profiilile, kuid mitte vÔimalus seda muuta.
OAuth2 lubatĂŒĂŒbid
OAuth2 mÀÀratleb mitu lubatĂŒĂŒpi, millest igaĂŒks on kohandatud konkreetsetele kasutusjuhtudele ja turvanĂ”uetele. Ăige lubatĂŒĂŒbi valimine on turvalise ja kasutajasĂ”braliku autentimiskogemuse tagamiseks ĂŒlioluline.
1. Autoriseerimiskoodi luba
Autoriseerimiskoodi luba on kĂ”ige sagedamini kasutatav ja soovitatav lubatĂŒĂŒp veebirakenduste jaoks. See hĂ”lmab mitmeastmelist protsessi, mis tagab, et kliendi saladust ei avaldata kunagi ressursi omaniku brauserile. See on mĂ”eldud kasutamiseks konfidentsiaalsete klientidega (kliendid, kes suudavad sĂ€ilitada oma kliendi saladuse konfidentsiaalsust). Siin on lihtsustatud ĂŒlevaade:
- Kliendirakendus suunab ressursi omaniku autoriseerimisserverisse.
- Ressursi omanik autentib end autoriseerimisserveris ja annab kliendirakendusele loa.
- Autoriseerimisserver suunab ressursi omaniku tagasi kliendirakendusse koos autoriseerimiskoodiga.
- Kliendirakendus vahetab autoriseerimiskoodi juurdepÀÀsumÀrgi ja vÀrskendusmÀrgi vastu.
- Kliendirakendus kasutab juurdepÀÀsumÀrki, et pÀÀseda kaitstud ressurssidele ressursiserveris.
NĂ€ide: Kasutaja soovib ĂŒhendada oma Google Drive'i konto kolmanda osapoole dokumenditöötlusrakendusega. Rakendus suunab kasutaja Google'i autentimislehele, kus ta logib sisse ja annab rakendusele loa oma Google Drive'i failidele juurde pÀÀseda. SeejĂ€rel suunab Google kasutaja tagasi rakendusse koos autoriseerimiskoodiga, mille rakendus vahetab juurdepÀÀsumĂ€rgi ja vĂ€rskendusmĂ€rgi vastu.
2. Kaudne luba
Kaudne luba on autoriseerimiskoodi loa lihtsustatud versioon, mis on mĂ”eldud kliendirakenduste jaoks, mis ei saa turvaliselt hoida kliendi saladust, nĂ€iteks ĂŒhe lehe rakendused (SPA) veebibrauseris vĂ”i pĂ”hirakendused. Selles lubatĂŒĂŒbis tagastatakse juurdepÀÀsumĂ€rk otse kliendirakendusele pĂ€rast seda, kui ressursi omanik on autoriseerimisserveriga autentinud. Kuid seda peetakse vĂ€hem turvaliseks kui autoriseerimiskoodi luba, kuna on oht, et juurdepÀÀsumĂ€rki peetakse kinni.
Oluline mĂ€rkus: Kaudset luba peetakse nĂŒĂŒd suuresti aegunuks. Turvalisuse parimad tavad soovitavad kasutada autoriseerimiskoodi luba koos PKCE-ga (Proof Key for Code Exchange), isegi SPA-de ja pĂ”hirakenduste puhul.
3. Ressursi omaniku parooliga mandaatide luba
Ressursi omaniku parooliga mandaatide luba vĂ”imaldab kliendirakendusel saada juurdepÀÀsumĂ€rgi, esitades otse ressursi omaniku kasutajanime ja parooli autoriseerimisserverile. Seda lubatĂŒĂŒpi tuleks kasutada ainult siis, kui kliendirakendust usaldatakse vĂ€ga ja sellel on otsene suhe ressursi omanikuga. Ăldiselt ei soovitata seda, kuna on oht jagada mandaate otse kliendirakendusega.
NĂ€ide: Pank arendatud esimese osapoole mobiilirakendus vĂ”ib kasutada seda lubatĂŒĂŒpi, et vĂ”imaldada kasutajatel oma kontodele juurde pÀÀseda. Kuid kolmanda osapoole rakendused peaksid seda lubatĂŒĂŒpi ĂŒldiselt vĂ€ltima.
4. Kliendimandaatide luba
Kliendimandaatide luba vĂ”imaldab kliendirakendusel saada juurdepÀÀsumĂ€rgi, kasutades oma mandaate (kliendi ID ja kliendi saladus) selle asemel, et tegutseda ressursi omaniku nimel. Seda lubatĂŒĂŒpi kasutatakse tavaliselt serveritevaheliseks suhtluseks vĂ”i siis, kui kliendirakendus peab pÀÀsema juurde ressurssidele, mis kuuluvad talle otse.
NĂ€ide: jĂ€lgimisrakendus, mis peab pÀÀsema pilvepakkuja serveri mÔÔdikutele, vĂ”ib kasutada seda lubatĂŒĂŒpi.
5. VÀrskendusmÀrgi luba
VÀrskendusmÀrgi luba vÔimaldab kliendirakendusel saada uue juurdepÀÀsumÀrgi, kasutades vÀrskendusmÀrki. See vÔimaldab kliendirakendusel sÀilitada juurdepÀÀsu kaitstud ressurssidele, ilma et oleks vaja ressursi omanikku rakendust uuesti autoriseerida. VÀrskendusmÀrk vahetatakse uue juurdepÀÀsumÀrgi ja valikuliselt uue vÀrskendusmÀrgi vastu. Vana juurdepÀÀsumÀrk kehtetuks tunnistatakse.
OAuth2 rakendamine: samm-sammuline juhend
OAuth2 rakendamine hÔlmab mitut pÔhisammu:
1. Kliendirakenduse registreerimine
Esimene samm on kliendirakenduse registreerimine autoriseerimisserveriga. See hĂ”lmab tavaliselt teabe esitamist, nagu rakenduse nimi, kirjeldus, ĂŒmbersuunamise URI-d (kus autoriseerimisserver suunab ressursi omaniku pĂ€rast autentimist ĂŒmber) ja soovitud lubatĂŒĂŒbid. SeejĂ€rel annab autoriseerimisserver vĂ€lja kliendi ID ja kliendi saladuse, mida kasutatakse teie rakenduse tuvastamiseks ja autentimiseks.
NĂ€ide: Rakenduse registreerimisel Google'i OAuth2 teenusega peate esitama ĂŒmbersuunamise URI, mis peab vastama URI-le, mida teie rakendus kasutab autoriseerimiskoodi vastuvĂ”tmiseks. Samuti peate mÀÀrama rakenduse nĂ”utud ulatuse, nĂ€iteks juurdepÀÀsu Google Drive'ile vĂ”i Gmailile.
2. Autoriseerimisvoo algatamine
JÀrgmine samm on autoriseerimisvoo algatamine. See hÔlmab ressursi omaniku suunamist autoriseerimisserveri autoriseerimispunkti. Autoriseerimispunkt nÔuab tavaliselt jÀrgmisi parameetreid:
client_id: autoriseerimisserveri vĂ€ljastatud kliendi ID.redirect_uri: URI, millele autoriseerimisserver suunab ressursi omaniku pĂ€rast autentimist ĂŒmber.response_type: autoriseerimisserverilt oodatav vastuse tĂŒĂŒp (ntcodeautoriseerimiskoodi loa jaoks).scope: soovitud juurdepÀÀsuulatus.state: valikuline parameeter, mida kasutatakse saitidevaheliste pĂ€ringute vĂ”ltsimise (CSRF) rĂŒnnakute vĂ€ltimiseks.
NĂ€ide: Ămbersuunamise URI vĂ”ib vĂ€lja nĂ€ha selline: https://example.com/oauth2/callback. Parameeter state on juhuslikult genereeritud string, mida teie rakendus saab kasutada, et kontrollida, et vastus autoriseerimisserverist on seaduslik.
3. Autoriseerimisvastuse kÀsitlemine
PĂ€rast seda, kui ressursi omanik on autoriseerimisserveriga autentinud ja kliendirakendusele loa andnud, suunab autoriseerimisserver ressursi omaniku tagasi kliendirakenduse ĂŒmbersuunamise URI-le kas autoriseerimiskoodiga (autoriseerimiskoodi loa jaoks) vĂ”i juurdepÀÀsumĂ€rgiga (kaudse loa jaoks). SeejĂ€rel peab kliendirakendus seda vastust asjakohaselt kĂ€sitlema.
NÀide: Kui autoriseerimisserver tagastab autoriseerimiskoodi, peab kliendirakendus selle vahetama juurdepÀÀsumÀrgi ja vÀrskendusmÀrgi vastu, tehes POST-pÀringu autoriseerimisserveri mÀrgipunkti. MÀrgipunkt nÔuab tavaliselt jÀrgmisi parameetreid:
grant_type: lubatĂŒĂŒp (ntauthorization_code).code: autoriseerimiskood, mis saadi autoriseerimisserverist.redirect_uri: sama ĂŒmbersuunamise URI, mida kasutati autoriseerimistaotluses.client_id: autoriseerimisserveri vĂ€ljastatud kliendi ID.client_secret: autoriseerimisserveri vĂ€ljastatud kliendi saladus (konfidentsiaalsete klientide jaoks).
4. Kaitstud ressurssidele juurdepÀÀs
Kui kliendirakendus on saanud juurdepÀÀsumÀrgi, saab ta seda kasutada kaitstud ressurssidele ressursiserveris juurdepÀÀsuks. JuurdepÀÀsumÀrk sisaldub tavaliselt HTTP-pÀringu pÀises Authorization, kasutades skeemi Bearer.
NÀide: Sotsiaalmeediaplatvormi kasutaja profiilile juurdepÀÀsuks vÔib kliendirakendus teha taotluse selline:
GET /api/v1/me HTTP/1.1
Host: api.example.com
Authorization: Bearer [access_token]
5. MÀrgi vÀrskendamise kÀsitlemine
JuurdepÀÀsumÀrgid on tavaliselt piiratud elueaga. Kui juurdepÀÀsumÀrk aegub, saab kliendirakendus vÀrskendusmÀrgi abil hankida uue juurdepÀÀsumÀrgi, ilma et oleks vaja ressursi omanikku rakendust uuesti autoriseerida. JuurdepÀÀsumÀrgi vÀrskendamiseks teeb kliendirakendus autoriseerimisserveri mÀrgipunkti POST-pÀringu jÀrgmiste parameetritega:
grant_type: lubatĂŒĂŒp (ntrefresh_token).refresh_token: autoriseerimisserverist saadud vĂ€rskendusmĂ€rk.client_id: autoriseerimisserveri vĂ€ljastatud kliendi ID.client_secret: autoriseerimisserveri vĂ€ljastatud kliendi saladus (konfidentsiaalsete klientide jaoks).
Turvakaalutlused
OAuth2 on vĂ”imas autoriseerimisraamistik, kuid on oluline seda rakendada turvaliselt, et kaitsta kasutajaandmeid ja vĂ€ltida rĂŒnnakuid. Siin on mĂ”ned peamised turvakaalutlused:
- Kasuta HTTPS-i: Kogu suhtlus kliendirakenduse, autoriseerimisserveri ja ressursiserveri vahel peaks olema krĂŒpteeritud, kasutades HTTPS-i, et vĂ€ltida pealtkuulamist.
- Valideeri ĂŒmbersuunamise URI-d: Valideeri ĂŒmbersuunamise URI-sid hoolikalt, et vĂ€ltida autoriseerimiskoodi sissepritse rĂŒnnakuid. Luba ainult registreeritud ĂŒmbersuunamise URI-sid ja veendu, et need on Ă”igesti vormindatud.
- Kaitse kliendi salajasi andmeid: Hoia kliendi saladused konfidentsiaalsena. Ăra kunagi sĂ€ilita neid kliendipoolses koodis vĂ”i avalda neid volitamata isikutele.
- Rakenda oleku parameeter: Kasuta parameetrit
stateCSRF-rĂŒnnakute vĂ€ltimiseks. - Valideeri juurdepÀÀsumĂ€rgid: Ressursiserver peab juurdepÀÀsu lubamisele kaitstud ressurssidele juurdepÀÀsu lubamisel juurdepÀÀsumĂ€rke valideerima. See hĂ”lmab tavaliselt mĂ€rgi allkirja ja aegumise aja kontrollimist.
- Rakenda ulatus: Kasuta ulatust, et piirata kliendirakendusele antud Ôigusi. Anna ainult minimaalsed vajalikud Ôigused.
- MĂ€rgi salvestamine: Salvesta mĂ€rgid turvaliselt. PĂ”hirakenduste puhul kaaluge operatsioonisĂŒsteemi turvaliste salvestusmehhanismide kasutamist. Veebirakenduste puhul kasuta turvalisi kĂŒpsiseid vĂ”i serveripoolseid seansse.
- Kaalu PKCE-d (Proof Key for Code Exchange): Rakenduste puhul, mis ei saa turvaliselt salvestada kliendi saladust (nagu SPA-d ja pÔhirakendused), kasuta PKCE-d autoriseerimiskoodi kinnipidamise ohu leevendamiseks.
OpenID Connect (OIDC)
OpenID Connect (OIDC) on autentimiskih, mis on ehitatud OAuth2 peale. See pakub standardiseeritud viisi, kuidas kliendirakendused saavad kontrollida ressursi omaniku identiteeti autoriseerimisserveri tehtud autentimise pÔhjal, samuti saada pÔhiteavet ressursi omaniku profiili kohta koostalitlusvÔimelisel ja REST-sarnasel viisil.
Kuigi OAuth2 on peamiselt autoriseerimisraamistik, lisab OIDC autentimiskomponendi, muutes selle sobivaks kasutusjuhtudeks, kus peate mitte ainult autoriseerima juurdepÀÀsu ressurssidele, vaid ka kontrollima kasutaja identiteeti. OIDC tutvustab ID-mÀrgi mÔistet, mis on JSON Web Token (JWT), mis sisaldab kasutaja identiteedi kohta vÀiteid.
OIDC rakendamisel sisaldab vastus autoriseerimisserverist nii juurdepÀÀsumÀrki (kaitstud ressurssidele juurdepÀÀsuks) kui ka ID-mÀrki (kasutaja identiteedi kontrollimiseks).
OAuth2 pakkuja valimine
Saate kas rakendada oma OAuth2 autoriseerimisserveri vĂ”i kasutada kolmanda osapoole pakkujat. Oma autoriseerimisserveri rakendamine vĂ”ib olla keeruline ja aeganĂ”udev, kuid see annab teile tĂ€ieliku kontrolli autentimisprotsessi ĂŒle. Kolmanda osapoole pakkuja kasutamine on sageli lihtsam ja kuluefektiivsem, kuid see tĂ€hendab, et tuginete autentimisel kolmandale osapoolele.
MÔned populaarsed OAuth2 pakkujad on:
- Google Identity Platform
- Facebook Login
- Microsoft Azure Active Directory
- Auth0
- Okta
- Ping Identity
OAuth2 pakkuja valimisel arvesta selliste teguritega nagu:
- Hind
- Funktsioonid
- Turvalisus
- UsaldusvÀÀrsus
- Lihtne integreerimine
- VastavusnÔuded (nt GDPR, CCPA)
- Arendajatoetus
OAuth2 erinevates keskkondades
OAuth2 kasutatakse paljudes keskkondades, alates veebirakendustest ja mobiilirakendustest kuni töölauarakenduste ja asjade interneti seadmeteni. Konkreetsed rakenduse ĂŒksikasjad vĂ”ivad olenevalt keskkonnast erineda, kuid pĂ”hikontseptsioonid ja -pĂ”himĂ”tted jÀÀvad samaks.
Veebirakendused
Veebirakendustes rakendatakse OAuth2 tavaliselt autoriseerimiskoodi abil serveripoolse koodiga, mis tegeleb mĂ€rgi vahetamise ja salvestamisega. Ăhe lehe rakenduste (SPA-de) puhul on soovitatav lĂ€henemisviis autoriseerimiskoodi kasutamine koos PKCE-ga.
Mobiilirakendused
Mobiilirakendustes rakendatakse OAuth2 tavaliselt autoriseerimiskoodi abil koos PKCE-ga vĂ”i OAuth2 pakkuja pakutud pĂ”hi SDK-ga. Oluline on salvestada juurdepÀÀsumĂ€rgid turvaliselt, kasutades operatsioonisĂŒsteemi turvalisi salvestusmehhanisme.
Töölauarakendused
Töölauarakendustes saab OAuth2 rakendada autoriseerimiskoodi abil koos sisseehitatud brauseriga vĂ”i sĂŒsteemibrauseriga. Sarnaselt mobiilirakendustega on oluline juurdepÀÀsumĂ€rke turvaliselt sĂ€ilitada.
Asjade interneti seadmed
Asjade interneti seadmetes vÔib OAuth2 rakendamine olla keerulisem nende seadmete piiratud ressursside ja turvapiirangute tÔttu. VÔib kasutada kliendimandaatide luba vÔi autoriseerimiskoodi loa lihtsustatud versiooni, olenevalt konkreetsetest nÔuetest.
Probleemide lahendamine OAuth2 levinud probleemide korral
OAuth2 rakendamine vÔib mÔnikord olla keeruline. Siin on mÔned levinud probleemid ja nende lahendamine:
- Kehtetu ĂŒmbersuunamise URI: Veenduge, et autoriseerimisserveriga registreeritud ĂŒmbersuunamise URI vastab autoriseerimistaotluses kasutatud URI-le.
- Kehtetu kliendi ID vÔi saladus: Kontrollige veel kord, et kliendi ID ja kliendi saladus on Ôiged.
- Volitamata ulatus: Veenduge, et autoriseerimisserver toetab nÔutud ulatust ja et kliendirakendusele on antud luba neile juurdepÀÀsuks.
- JuurdepÀÀsumÀrgi aegumine: Kasutage uue juurdepÀÀsumÀrgi saamiseks vÀrskendusmÀrki.
- MÀrgi valideerimine nurjus: Veenduge, et ressursiserver on Ôigesti konfigureeritud juurdepÀÀsumÀrke valideerima.
- CORS-i vead: Kui teil esinevad saitidevahelise ressursi jagamise (CORS) vead, veenduge, et autoriseerimisserver ja ressursiserver on Ôigesti konfigureeritud, et lubada pÀringuid teie kliendirakenduse algusest.
JĂ€reldus
OAuth2 on vĂ”imas ja mitmekĂŒlgne autoriseerimisraamistik, mis vĂ”imaldab turvalist ja sujuvat kasutaja autentimist paljude rakenduste jaoks. MĂ”istes pĂ”hikontseptsioone, lubatĂŒĂŒpe ja turvakaalutlusi, saavad arendajad OAuth2 tĂ”husalt rakendada, et kaitsta kasutajaandmeid ja pakkuda suurepĂ€rast kasutuskogemust.
See juhend on andnud OAuth2 rakendamisest pĂ”hjaliku ĂŒlevaate. TĂ€psema teabe ja juhiste saamiseks pidage meeles, et tutvuge ametlike OAuth2 spetsifikatsioonidega ja valitud OAuth2 pakkuja dokumentatsiooniga. Seadke alati esikohale turvalisuse parimad tavad ja pĂŒsige kursis viimaste soovitustega, et tagada kasutajaandmete terviklikkus ja konfidentsiaalsus.