OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

Նշում. թարգմ.Okta-ի այս հիանալի հոդվածը բացատրում է, թե ինչպես են աշխատում OAuth-ը և OIDC-ը (OpenID Connect) պարզ և հստակ ձևով: Այս գիտելիքը օգտակար կլինի ծրագրավորողների, համակարգի ադմինիստրատորների և նույնիսկ հանրաճանաչ վեբ հավելվածների «սովորական օգտատերերի» համար, որոնք, ամենայն հավանականությամբ, նաև գաղտնի տվյալներ են փոխանակում այլ ծառայությունների հետ:

Համացանցի քարե դարում ծառայությունների միջև տեղեկատվության փոխանակումը հեշտ էր: Դուք պարզապես տվել եք ձեր մուտքն ու գաղտնաբառը մի ծառայությունից մյուսին, որպեսզի նա մտնի ձեր հաշիվ և ստանա իրեն անհրաժեշտ ցանկացած տեղեկություն:

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց
«Տվեք ինձ ձեր բանկային հաշիվը»: «Մենք խոստանում ենք, որ գաղտնաբառով և փողով ամեն ինչ լավ կլինի։ Դա ազնիվ է, ազնիվ»: *հի հի*

Սարսափ. Ոչ ոք երբեք չպետք է պահանջի օգտվողից կիսել օգտվողի անունը և գաղտնաբառը, հավատարմագրերը, մեկ այլ ծառայության հետ։ Չկա երաշխիք, որ այս ծառայության ետևում կանգնած կազմակերպությունը կպահպանի տվյալները և չի հավաքի ավելի շատ անձնական տեղեկատվություն, քան անհրաժեշտ է: Դա կարող է խելահեղ թվալ, բայց որոշ հավելվածներ դեռ օգտագործում են այս պրակտիկան:

Այսօր կա մեկ ստանդարտ, որը թույլ է տալիս մի ծառայությանն ապահով կերպով օգտագործել մյուսի տվյալները: Ցավոք, նման ստանդարտներում օգտագործվում են շատ ժարգոններ և տերմիններ, ինչը բարդացնում է դրանց ըմբռնումը: Այս նյութի նպատակն է բացատրել, թե ինչպես են նրանք աշխատում՝ օգտագործելով պարզ նկարազարդումներ (Կարծում եք, որ իմ նկարները նմանվու՞մ են մանկական շղարշներին։

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

Ի դեպ, այս ուղեցույցը հասանելի է նաև վիդեո ձևաչափով.

Տիկնայք և պարոնայք, բարի գալուստ. OAuth 2.0

OAuth 2.0 անվտանգության ստանդարտ է, որը թույլ է տալիս մեկ հավելվածին ստանալ մեկ այլ հավելվածի տեղեկատվություն մուտք գործելու թույլտվություն: Թույլտվություն տալու քայլերի հաջորդականությունը [թույլտվություն] (Կամ համաձայնություն [համաձայնություն]) հաճախ զանգում են թույլտվություն [լիազորում] կամ նույնիսկ պատվիրակված լիազորություն [պատվիրակված թույլտվություն]. Այս ստանդարտով դուք թույլ եք տալիս հավելվածին կարդալ տվյալներ կամ օգտագործել մեկ այլ հավելվածի գործառույթները ձեր անունից՝ առանց ձեր գաղտնաբառը տալու: Դաս!

Որպես օրինակ, ենթադրենք, որ դուք հայտնաբերել եք «Օրվա անհաջող բառախաղ» անվանումով կայք: [Օրվա սարսափելի բառախաղ] և որոշել է գրանցվել դրա վրա՝ հեռախոսով տեքստային հաղորդագրությունների տեսքով ամենօրյա բառախաղեր ստանալու համար: Ձեզ շատ դուր եկավ կայքը, և որոշեցիք այն կիսել ձեր բոլոր ընկերների հետ: Ի վերջո, բոլորը սիրում են սողացող բառախաղեր, չէ՞:

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց
«Օրվա դժբախտ բառախաղ. Լսե՞լ եք այն տղայի մասին, ով կորցրել է իր մարմնի ձախ կեսը: Հիմա նա միշտ իրավացի է»։ (մոտավոր թարգմանություն, քանի որ բնագիրն ունի իր բառախաղը՝ մոտավորապես թարգմ.)

Հասկանալի է, որ կոնտակտների ցանկից յուրաքանչյուրին գրելը տարբերակ չէ: Եվ, եթե դուք նույնիսկ մի փոքր նման եք ինձ, ապա ամեն ինչի կհասնեք ավելորդ աշխատանքից խուսափելու համար։ Բարեբախտաբար, Օրվա սարսափելի բառախաղը կարող է ինքնուրույն հրավիրել ձեր բոլոր ընկերներին: Դա անելու համար պարզապես անհրաժեշտ է բացել մուտքը դեպի ձեր կոնտակտների էլ.

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց
«Բոլորն էլ սիրում են բառախաղեր։ -Արդեն մուտք գործե՞լ եք: «Կցանկանա՞ք թույլ տալ «Օրվա սարսափելի բառախաղ» կայքին մուտք գործել ձեր կոնտակտների ցուցակ: - Շնորհակալություն! Այսուհետ մենք ամեն օր հիշեցումներ կուղարկենք բոլորին, ում ճանաչում եք, մինչև ժամանակի վերջը: Դու լավագույն ընկերն ես»:

  1. Ընտրեք ձեր էլփոստի ծառայությունը:
  2. Անհրաժեշտության դեպքում գնացեք փոստի կայք և մուտք գործեք ձեր հաշիվ:
  3. Օրվա սարսափելի բառախաղին թույլտվություն տվեք մուտք գործել ձեր կոնտակտներ:
  4. Վերադարձ դեպի Օրվա սարսափելի բառախաղի կայք։

Եթե ​​փոխեք ձեր միտքը, OAuth օգտագործող հավելվածները նաև հնարավորություն են տալիս չեղարկել մուտքը: Երբ որոշեք, որ այլևս չեք ցանկանում կիսվել կոնտակտներով Օրվա սարսափելի բառախաղի հետ, կարող եք գնալ փոստի կայք և հեռացնել բառախաղի կայքը լիազորված հավելվածների ցանկից:

OAuth հոսք

Մենք պարզապես անցել ենք այն, ինչ սովորաբար կոչվում է հոսքը [հոսք] OAuth. Մեր օրինակում այս հոսքը բաղկացած է տեսանելի քայլերից, ինչպես նաև մի քանի անտեսանելի քայլերից, որոնցում երկու ծառայություններ պայմանավորվում են տեղեկատվության անվտանգ փոխանակման մասին: Օրվա սարսափելի բառախաղի նախորդ օրինակն օգտագործում է OAuth 2.0-ի ամենատարածված հոսքը, որը հայտնի է որպես «լիազորման կոդի» հոսք: [«լիազորման կոդը» հոսք].

Նախքան OAuth-ի աշխատանքի մանրամասները խորանալը, եկեք խոսենք որոշ տերմինների նշանակության մասին.

  • Ռեսուրսների սեփականատեր:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Դա դու ես! Դուք պատկանում եք ձեր հավատարմագրերին, ձեր տվյալներին և վերահսկում եք բոլոր գործողությունները, որոնք կարող են իրականացվել ձեր հաշիվներում:

  • հաճախորդ:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Հավելված (օրինակ՝ Օրվա սարսափելի բառախաղ ծառայություն), որը ցանկանում է մուտք գործել կամ կատարել որոշակի գործողություններ Ռեսուրսների սեփականատեր«Ա.

  • Թույլտվության սերվեր:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Հավելվածը, որը գիտի Ռեսուրսների սեփականատեր«ա և որում u Ռեսուրսների սեփականատեր«Արդեն հաշիվ ունեմ:

  • ռեսուրսների սերվեր:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Ծրագրավորման ինտերֆեյս (API) կամ ծառայություն, որը հաճախորդ ցանկանում է օգտագործել անունից Ռեսուրսների սեփականատեր«Ա.

  • Վերահղման URI:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Հղումը, որ Թույլտվության սերվեր կվերահղվի Ռեսուրսների սեփականատեր«և թույլտվություն տալուց հետո հաճախորդժամը. Այն երբեմն կոչվում է «Callback URL»:

  • արձագանքման տեսակը:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Սպասվող տեղեկատվության տեսակը հաճախորդ. Առավել տարածված արձագանքման տեսակը«Օհմը ծածկագիրն է, այսինքն հաճախորդ ակնկալում է ստանալ Լիազորման ծածկագիր.

  • Շրջանակ:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Սա պահանջվող թույլտվությունների մանրամասն նկարագրությունն է հաճախորդ'y, օրինակ՝ տվյալներ մուտք գործելը կամ որոշակի գործողություններ կատարելը:

  • Համաձայնություն:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Թույլտվության սերվեր տեւում է Շրջանակներումխնդրեց հաճախորդ«օմ, և հարցնում է Ռեսուրսների սեփականատեր«ա, նա պատրա՞ստ է տրամադրել հաճախորդ«ունենալ համապատասխան թույլտվություններ:

  • Հաճախորդի նույնականացում:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Այս ID-ն օգտագործվում է նույնականացման համար հաճախորդ'a on Թույլտվության սերվերե.

  • Հաճախորդի գաղտնիք:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Սա այն գաղտնաբառը է, որը միայն հայտնի է հաճախորդդու և Թույլտվության սերվերժամը. Այն թույլ է տալիս նրանց կիսվել տեղեկատվությունը մասնավոր կերպով:

  • Լիազորման ծածկագիր:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Ժամանակավոր կոդ՝ վավերականության կարճ ժամկետով, որը հաճախորդ տրամադրում է Թույլտվության սերվեր-ի դիմաց Մուտքի նշան.

  • Մուտքի նշան:

    OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

    Բանալին, որը հաճախորդը կօգտագործի շփվելու համար ռեսուրսների սերվեր«օմ. Մի տեսակ կրծքանշան կամ բանալի քարտ, որն ապահովում է հաճախորդ«տվյալներ պահանջելու կամ գործողություններ կատարելու թույլտվություն ունենալ ռեսուրսների սերվերես քո անունից:

ՆշումԵրբեմն թույլտվության սերվերը և ռեսուրսների սերվերը նույն սերվերն են: Այնուամենայնիվ, որոշ դեպքերում դրանք կարող են լինել տարբեր սերվերներ, նույնիսկ եթե դրանք չեն պատկանում նույն կազմակերպությանը: Օրինակ, լիազորման սերվերը կարող է լինել երրորդ կողմի ծառայություն, որը վստահում է ռեսուրսների սերվերին:

Այժմ, երբ մենք լուսաբանեցինք OAuth 2.0-ի հիմնական հասկացությունները, եկեք վերադառնանք մեր օրինակին և ավելի մոտիկից նայենք, թե ինչ է տեղի ունենում OAuth հոսքում:

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

  1. դու, Ռեսուրսների սեփականատեր, ցանկանում եք տրամադրել Օրվա սարսափելի բառախաղ ծառայությունը (հաճախորդy) մուտք դեպի ձեր կոնտակտներ, որպեսզի նրանք կարողանան հրավերներ ուղարկել ձեր բոլոր ընկերներին:
  2. հաճախորդ վերահղում է զննարկիչը դեպի էջ Թույլտվության սերվեր«ա» և ներառել հարցման մեջ Հաճախորդի նույնականացում, Վերահղման URI, արձագանքման տեսակը և մեկ կամ ավելի Շրջանակներում (թույլտվություններ) այն պետք է:
  3. Թույլտվության սերվեր ստուգում է ձեզ՝ անհրաժեշտության դեպքում խնդրելով օգտանուն և գաղտնաբառ:
  4. Թույլտվության սերվեր ցուցադրում է ձև Համաձայնություն (հաստատումներ) բոլորի ցանկով Շրջանակներումխնդրեց հաճախորդ«օմ. Դուք համաձայն եք կամ մերժում եք:
  5. Թույլտվության սերվեր վերահղում է ձեզ կայք հաճախորդ«ա, օգտագործելով Վերահղման URI հետ Լիազորման ծածկագիր (լիազորման կոդը):
  6. հաճախորդ անմիջականորեն շփվում է Թույլտվության սերվերօհմ (շրջանցելով զննարկիչը Ռեսուրսների սեփականատեր«ա) և ապահով կերպով ուղարկում է Հաճախորդի նույնականացում, Հաճախորդի գաղտնիք и Լիազորման ծածկագիր.
  7. Թույլտվության սերվեր ստուգում է տվյալները և պատասխանում Մուտքի նշան'om (մուտքի նշան):
  8. Հիմա հաճախորդ կարող է օգտագործել Մուտքի նշան հարցում ուղարկելու համար ռեսուրսների սերվեր կոնտակտների ցուցակ ստանալու համար:

Հաճախորդի ID և գաղտնիք

Օրվա սարսափելի բառախաղին ձեր կոնտակտներ մուտք գործելու թույլտվությունից շատ առաջ հաճախորդը և լիազորման սերվերը հաստատել էին աշխատանքային հարաբերություններ: Թույլտվության սերվերը ստեղծել է Հաճախորդի ID-ն և Հաճախորդի Գաղտնիքը (երբեմն կոչվում է Հավելվածի ID- ն и Հավելվածի գաղտնիքը) և ուղարկեց դրանք Հաճախորդին OAuth-ի շրջանակներում հետագա փոխգործակցության համար:

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց
"- Բարեւ Ձեզ! Ես կցանկանայի աշխատել ձեզ հետ: - Իհարկե, խնդիր չէ: Ահա ձեր հաճախորդի ID-ն և գաղտնիքը»:

Անունը ենթադրում է, որ Հաճախորդի Գաղտնիքը պետք է գաղտնի մնա, որպեսզի դա իմանան միայն Հաճախորդը և Լիազորման Սերվերը: Ի վերջո, նրա օգնությամբ է, որ լիազորման սերվերը հաստատում է Հաճախորդի ճշմարտացիությունը:

Բայց սա դեռ ամենը չէ... Խնդրում ենք ողջունել OpenID Connect-ը:

OAuth 2.0-ը նախատեսված է միայն թույլտվություն - տվյալների և գործառույթների հասանելիություն ապահովել մի հավելվածից մյուսը: OpenID միացում (OIDC) OAuth 2.0-ի վերևում գտնվող բարակ շերտ է, որն ավելացնում է օգտատիրոջ մուտքի և պրոֆիլի մանրամասները, ով մուտք է գործել հաշիվ: Մուտք գործելու նիստի կազմակերպումը հաճախ կոչվում է իսկությունը [նույնականացում]և համակարգ մուտք գործած օգտատիրոջ մասին տեղեկատվություն (այսինքն՝ մասին Ռեսուրսների սեփականատերե), - անձնական տվյալներ [ինքնություն]. Եթե ​​լիազորման սերվերը աջակցում է OIDC-ին, այն երբեմն կոչվում է որպես անձնական տվյալների մատակարար [ինքնության մատակարար]քանի որ ապահովում է հաճախորդ-ի մասին տեղեկություններ ունեք Ռեսուրսների սեփականատերե.

OpenID Connect-ը թույլ է տալիս իրականացնել սցենարներ, որտեղ մեկ մուտք կարող է օգտագործվել մի քանի հավելվածներում. այս մոտեցումը հայտնի է նաև որպես. միայնակ գրանցում (SSO): Օրինակ, հավելվածը կարող է աջակցել SSO-ի ինտեգրմանը սոցիալական ցանցերի հետ, ինչպիսիք են Facebook-ը կամ Twitter-ը՝ թույլ տալով օգտվողներին օգտագործել այն հաշիվը, որն արդեն ունեն և նախընտրում են օգտագործել:

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

Հոսքը (հոսքը) OpenID Connect-ի տեսքը նույնն է, ինչ OAuth-ի դեպքում: Միակ տարբերությունն այն է, որ առաջնային հարցումում օգտագործվում է հատուկ շրջանակը openid, - Ա հաճախորդ ի վերջո նման է լինում Մուտքի նշանԻսկ ID նշան.

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

Ինչպես OAuth հոսքում, Մուտքի նշան OpenID Connect-ում սա որոշակի արժեք է, որը պարզ չէ հաճախորդժամը. Տեսանկյունից հաճախորդ‘а Մուտքի նշան ներկայացնում է նիշերի մի շարան, որը փոխանցվում է յուրաքանչյուր խնդրանքի հետ մեկտեղ ռեսուրսների սերվեր'y, որը որոշում է, թե արդյոք նշանը վավեր է: ID նշան բոլորովին այլ բան է ներկայացնում:

ID Token-ը JWT է

ID նշան նիշերի հատուկ ձևաչափված տող է, որը հայտնի է որպես JSON Web Token կամ JWT (երբեմն JWT նշաններն արտասանվում են «ջոտերի» նման). Դրսի դիտորդներին JWT-ն կարող է անհասկանալի շփոթություն թվալ, բայց հաճախորդ կարող է հանել տարբեր տեղեկություններ JWT-ից, ինչպիսիք են ID-ն, օգտվողի անունը, մուտքի ժամանակը, ժամկետի ավարտը ID նշան«ա, JWT-ին միջամտելու փորձերի առկայություն։ Տվյալները ներսում ID նշան«ա կոչվում են հավելվածներ [պնդումները].

OAuth-ի և OpenID Connect-ի պատկերազարդ ուղեցույց

OIDC-ի դեպքում կա նաև ստանդարտ ձև, որով հաճախորդ կարող է լրացուցիչ տեղեկություններ պահանջել անձի մասին [ինքնություն] - ից Թույլտվության սերվեր«ա, օրինակ, էլփոստի հասցե օգտագործելով Մուտքի նշան.

Իմացեք ավելին OAuth-ի և OIDC-ի մասին

Այսպիսով, մենք հակիրճ վերանայեցինք, թե ինչպես են աշխատում OAuth-ը և OIDC-ն: Պատրա՞ստ եք խորանալ: Ահա լրացուցիչ ռեսուրսներ, որոնք կօգնեն ձեզ ավելին իմանալ OAuth 2.0-ի և OpenID Connect-ի մասին.

Ինչպես միշտ, ազատ զգալ մեկնաբանել: Մեր վերջին նորություններին տեղեկանալու համար բաժանորդագրվեք Twitter и YouTube Okta մշակողների համար:

PS թարգմանչից

Կարդացեք նաև մեր բլոգում.

Source: www.habr.com

Добавить комментарий