Sobes.tech
Middle

Kas ir OAuth autentifikācija un kā tā darbojas?

sobes.tech AI

Atbilde no AI

OAuth ir atvērts autorizācijas standarts. Tas ļauj lietotājam sniegt trešajai pusei ierobežotu piekļuvi saviem datiem, kas glabājas citā servisā (resursu serverī), bez nepieciešamības nodot savus akreditācijas datus (lietotājvārdu/paroli) šai lietojumprogrammai.

OAuth darbība balstās uz "piekļuves žetonu" izdošanu vietā ar akreditācijas datiem. Tipisks plūsmas process ir šāds:

  1. Autorizācijas pieprasījums: Lietotājs mēģina veikt darbību trešās puses lietojumprogrammā, kas prasa piekļuvi resursu servera datiem. Lietojumprogramma iniciē autorizācijas pieprasījumu resursu servera autorizācijas serverim.
  2. Pāradresācija uz autorizācijas serveri: Lietotājs tiek novirzīts uz autorizācijas servera lapu.
  3. Lietotāja autentifikācija: Lietotājs autentificējas autorizācijas serverī (ja vēl nav).
  4. Lietotāja piekrišana (Consent): Autorizācijas serveris pieprasa lietotājam atļauju sniegt noteiktu piekļuves līmeni saviem datiem (scopes). Lietotājs vai nu piekrīt, vai noraida pieprasījumu.
  5. Autorizācijas koda izsniegšana: Ja lietotājs piekrīt, autorizācijas serveris novirza lietotāju atpakaļ uz trešo pusi lietojumprogrammu, sniedzot "autorizācijas kodu".
  6. Koda apmaiņa pret piekļuves žetonu: Trešās puses lietojumprogramma, saņemot kodu, tieši veic pieprasījumu autorizācijas serverim, lai apmainītu šo kodu pret "piekļuves žetonu" (Access Token) un, ja nepieciešams, "atsvaidzināšanas žetonu" (Refresh Token). Šis pieprasījums notiek starp serveriem, bez lietotāja pārlūkprogrammas iesaistes, kas palielina drošību.
  7. Piekļuve datiem: Trešās puses lietojumprogramma izmanto iegūto piekļuves žetonu, lai veiktu pieprasījumus resursu serverim lietotāja vārdā. Katrs šāds pieprasījums tiek nosūtīts ar žetonu galvenē.
  8. Žetona validācija: Resursu serveris pārbauda piekļuves žetonu un, ja tas ir derīgs un atbilst pieprasītajiem scope, nodrošina piekļuvi datiem.

OAuth piedāvā vairākus plūsmas (flows), kas ir piemēroti dažādiem scenārijiem, piemēram:

  • Authorization Code Flow: Visdrošākais, tiek izmantots tīmekļa lietojumprogrammām ar servera pusi.
  • Implicit Flow: Novecojis, tika izmantots tīmekļa lietojumprogrammām bez servera puses.
  • Client Credentials Flow: Lietojumprogrammām, kas piekļūst saviem resursiem, ne lietotāja datiem.
  • Resource Owner Password Credentials Flow: Nav ieteicams, pārsūtot lietotāja akreditācijas datus lietojumprogrammai.

(Piemērs — Authorization Code Flow)

C# realizācijā OAuth bieži izmanto bibliotēkas, piemēram, ASP.NET Core Identity ar dažādiem pakalpojumu sniedzējiem (Google, Facebook utt.), vai IdentityServer bibliotēkas, lai izveidotu savu autorizācijas serveri.