Sobes.tech
Middle

რა არის OAuth-ის ავტორიზაცია და როგორ მუშაობს?

sobes.tech AI

პასუხი AI-სგან

OAuth — դա բաց ստանդարտ է թույլտվության համար: Այն թույլ է տալիս օգտվողին տրամադրել երրորդ կողմի հավելվածին սահմանափակ մուտք դեպի իր տվյալները, որոնք պահվում են այլ ծառայության (ресուրսային սերվեր), առանց անհրաժեշտության փոխանցելու իր մուտքագրող տվյալները (մուտք/գաղտնաբառ) այդ հավելվածին:

OAuth-ի աշխատանքը հիմնված է "մուտքագրման տոքենների" տրամադրման վրա փոխարենը մուտքագրող տվյալների: Տիպիկ գործընթացը հետևյալն է.

  1. Ավտորիզացիայի հարցում: Օգտվողը փորձում է կատարել գործողություն երրորդ կողմի հավելվածում, որը պահանջում է մուտք դեպի ռեսուրսային սերվերի տվյալները: Հավելվածը սկսում է ավտորիզացիայի հարցում ռեսուրսային սերվերի ավտորիզացիոն սերվերին:
  2. Ուղղում ավտորիզացիոն սերվերին: Օգտվողը ուղղվում է ավտորիզացիոն սերվերի էջ:
  3. Օգտվողի նույնականացում: Օգտվողը նույնականացվում է ավտորիզացիոն սերվերում (եթե դեռ չի):
  4. Օգտվողի համաձայնություն (Consent): Սերվերը խնդրում է օգտվողից թույլտվություն տրամադրել որոշակի մակարդակի մուտք դեպի իր տվյալները (scopes). Օգտվողը կամ համաձայն է, կամ մերժում է հարցումը:
  5. Ավտորիզացիոն կոդի տրամադրում: Եթե օգտվողը համաձայն է, սերվերը ավտորիզացիոն փոխանցում է օգտվողին ետ՝ երրորդ հավելված, և տրամադրում է "ավտորիզացիոն կոդ":
  6. Կոդի փոխանակում մուտքագրման տոքենի համար: Երրորդ հավելվածը, որը ստացել է ավտորիզացիոն կոդը, ուղիղ հարցում է կատարում ավտորիզացիոն սերվերին՝ փոխանակելու այդ կոդը "մուտքագրման տոքեն" (Access Token) և հնարավոր է՝ "թարմացման տոքեն" (Refresh Token): Այս հարցումը կատարվում է սերվերների միջև, առանց օգտվողի բրաուզերի միջամտության, ինչը բարձրացնում է անվտանգությունը:
  7. Տվյալների մուտք: Երրորդ հավելվածը օգտագործում է ստացված մուտքագրման տոքենը՝ կատարելու հարցումներ ռեսուրսային սերվերին օգտվողի անունից: Ամեն such հարցում մուտքագրման տոքենը ուղարկվում է գլխագրում:
  8. Տոքենի վավերականացում: Ռեսուրսային սերվերը վավերականացնում է մուտքագրման տոքենը և, եթե այն վավեր է և համապատասխանում է պահանջվող scope-ներին, տրամադրում է տվյալներին մուտք:

OAuth ունի մի քանի հոսքեր (flows), որոնք հարմար են տարբեր սցենարների համար, օրինակ՝

  • Authorization Code Flow: Ամենաբարձր անվտանգ, օգտագործվում է սերվերային մասով վեբ հավելվածների համար:
  • Implicit Flow: Հնացած, օգտագործվում էր առանց սերվերային մասի վեբ հավելվածների համար:
  • Client Credentials Flow: Հավելվածների համար, որոնք ստանում են մուտք իրենց սեփական ռեսուրսներին, ոչ օգտվողական:
  • Resource Owner Password Credentials Flow: Չի խորհուրդ տրվում, փոխանցելով օգտվողի մուտքագրող տվյալները հավելվածին:

(Օրինակ՝ Authorization Code Flow)

C#-ում OAuth-ի իրականացման համար հաճախ օգտագործվում են գրադարաններ, ինչպիսիք են ASP.NET Core Identity տարբեր պրովայդերների (Google, Facebook և այլն) հետ, կամ IdentityServer գրադարանները՝ սեփական ավտորիզացիոն սերվեր ստեղծելու համար: