Նշում. թարգմ.Okta-ի այս հիանալի հոդվածը բացատրում է, թե ինչպես են աշխատում OAuth-ը և OIDC-ը (OpenID Connect) պարզ և հստակ ձևով: Այս գիտելիքը օգտակար կլինի ծրագրավորողների, համակարգի ադմինիստրատորների և նույնիսկ հանրաճանաչ վեբ հավելվածների «սովորական օգտատերերի» համար, որոնք, ամենայն հավանականությամբ, նաև գաղտնի տվյալներ են փոխանակում այլ ծառայությունների հետ:
Համացանցի քարե դարում ծառայությունների միջև տեղեկատվության փոխանակումը հեշտ էր: Դուք պարզապես տվել եք ձեր մուտքն ու գաղտնաբառը մի ծառայությունից մյուսին, որպեսզի նա մտնի ձեր հաշիվ և ստանա իրեն անհրաժեշտ ցանկացած տեղեկություն:
«Տվեք ինձ ձեր բանկային հաշիվը»: «Մենք խոստանում ենք, որ գաղտնաբառով և փողով ամեն ինչ լավ կլինի։ Դա ազնիվ է, ազնիվ»: *հի հի*
Սարսափ. Ոչ ոք երբեք չպետք է պահանջի օգտվողից կիսել օգտվողի անունը և գաղտնաբառը, հավատարմագրերը, մեկ այլ ծառայության հետ։ Չկա երաշխիք, որ այս ծառայության ետևում կանգնած կազմակերպությունը կպահպանի տվյալները և չի հավաքի ավելի շատ անձնական տեղեկատվություն, քան անհրաժեշտ է: Դա կարող է խելահեղ թվալ, բայց որոշ հավելվածներ դեռ օգտագործում են այս պրակտիկան:
Այսօր կա մեկ ստանդարտ, որը թույլ է տալիս մի ծառայությանն ապահով կերպով օգտագործել մյուսի տվյալները: Ցավոք, նման ստանդարտներում օգտագործվում են շատ ժարգոններ և տերմիններ, ինչը բարդացնում է դրանց ըմբռնումը: Այս նյութի նպատակն է բացատրել, թե ինչպես են նրանք աշխատում՝ օգտագործելով պարզ նկարազարդումներ (Կարծում եք, որ իմ նկարները նմանվու՞մ են մանկական շղարշներին։
Ի դեպ, այս ուղեցույցը հասանելի է նաև վիդեո ձևաչափով.
Տիկնայք և պարոնայք, բարի գալուստ. OAuth 2.0
OAuth 2.0 անվտանգության ստանդարտ է, որը թույլ է տալիս մեկ հավելվածին ստանալ մեկ այլ հավելվածի տեղեկատվություն մուտք գործելու թույլտվություն: Թույլտվություն տալու քայլերի հաջորդականությունը [թույլտվություն] (Կամ համաձայնություն[համաձայնություն]) հաճախ զանգում են թույլտվություն[լիազորում] կամ նույնիսկ պատվիրակված լիազորություն[պատվիրակված թույլտվություն]. Այս ստանդարտով դուք թույլ եք տալիս հավելվածին կարդալ տվյալներ կամ օգտագործել մեկ այլ հավելվածի գործառույթները ձեր անունից՝ առանց ձեր գաղտնաբառը տալու: Դաս!
Որպես օրինակ, ենթադրենք, որ դուք հայտնաբերել եք «Օրվա անհաջող բառախաղ» անվանումով կայք: [Օրվա սարսափելի բառախաղ] և որոշել է գրանցվել դրա վրա՝ հեռախոսով տեքստային հաղորդագրությունների տեսքով ամենօրյա բառախաղեր ստանալու համար: Ձեզ շատ դուր եկավ կայքը, և որոշեցիք այն կիսել ձեր բոլոր ընկերների հետ: Ի վերջո, բոլորը սիրում են սողացող բառախաղեր, չէ՞:
«Օրվա դժբախտ բառախաղ. Լսե՞լ եք այն տղայի մասին, ով կորցրել է իր մարմնի ձախ կեսը: Հիմա նա միշտ իրավացի է»։ (մոտավոր թարգմանություն, քանի որ բնագիրն ունի իր բառախաղը՝ մոտավորապես թարգմ.)
Հասկանալի է, որ կոնտակտների ցանկից յուրաքանչյուրին գրելը տարբերակ չէ: Եվ, եթե դուք նույնիսկ մի փոքր նման եք ինձ, ապա ամեն ինչի կհասնեք ավելորդ աշխատանքից խուսափելու համար։ Բարեբախտաբար, Օրվա սարսափելի բառախաղը կարող է ինքնուրույն հրավիրել ձեր բոլոր ընկերներին: Դա անելու համար պարզապես անհրաժեշտ է բացել մուտքը դեպի ձեր կոնտակտների էլ.
«Բոլորն էլ սիրում են բառախաղեր։ -Արդեն մուտք գործե՞լ եք: «Կցանկանա՞ք թույլ տալ «Օրվա սարսափելի բառախաղ» կայքին մուտք գործել ձեր կոնտակտների ցուցակ: - Շնորհակալություն! Այսուհետ մենք ամեն օր հիշեցումներ կուղարկենք բոլորին, ում ճանաչում եք, մինչև ժամանակի վերջը: Դու լավագույն ընկերն ես»:
Ընտրեք ձեր էլփոստի ծառայությունը:
Անհրաժեշտության դեպքում գնացեք փոստի կայք և մուտք գործեք ձեր հաշիվ:
Օրվա սարսափելի բառախաղին թույլտվություն տվեք մուտք գործել ձեր կոնտակտներ:
Վերադարձ դեպի Օրվա սարսափելի բառախաղի կայք։
Եթե փոխեք ձեր միտքը, OAuth օգտագործող հավելվածները նաև հնարավորություն են տալիս չեղարկել մուտքը: Երբ որոշեք, որ այլևս չեք ցանկանում կիսվել կոնտակտներով Օրվա սարսափելի բառախաղի հետ, կարող եք գնալ փոստի կայք և հեռացնել բառախաղի կայքը լիազորված հավելվածների ցանկից:
OAuth հոսք
Մենք պարզապես անցել ենք այն, ինչ սովորաբար կոչվում է հոսքը[հոսք] OAuth. Մեր օրինակում այս հոսքը բաղկացած է տեսանելի քայլերից, ինչպես նաև մի քանի անտեսանելի քայլերից, որոնցում երկու ծառայություններ պայմանավորվում են տեղեկատվության անվտանգ փոխանակման մասին: Օրվա սարսափելի բառախաղի նախորդ օրինակն օգտագործում է OAuth 2.0-ի ամենատարածված հոսքը, որը հայտնի է որպես «լիազորման կոդի» հոսք: [«լիազորման կոդը» հոսք].
Նախքան OAuth-ի աշխատանքի մանրամասները խորանալը, եկեք խոսենք որոշ տերմինների նշանակության մասին.
Ռեսուրսների սեփականատեր:
Դա դու ես! Դուք պատկանում եք ձեր հավատարմագրերին, ձեր տվյալներին և վերահսկում եք բոլոր գործողությունները, որոնք կարող են իրականացվել ձեր հաշիվներում:
հաճախորդ:
Հավելված (օրինակ՝ Օրվա սարսափելի բառախաղ ծառայություն), որը ցանկանում է մուտք գործել կամ կատարել որոշակի գործողություններ Ռեսուրսների սեփականատեր«Ա.
Թույլտվության սերվեր:
Հավելվածը, որը գիտի Ռեսուրսների սեփականատեր«ա և որում u Ռեսուրսների սեփականատեր«Արդեն հաշիվ ունեմ:
ռեսուրսների սերվեր:
Ծրագրավորման ինտերֆեյս (API) կամ ծառայություն, որը հաճախորդ ցանկանում է օգտագործել անունից Ռեսուրսների սեփականատեր«Ա.
Վերահղման URI:
Հղումը, որ Թույլտվության սերվեր կվերահղվի Ռեսուրսների սեփականատեր«և թույլտվություն տալուց հետո հաճախորդժամը. Այն երբեմն կոչվում է «Callback URL»:
արձագանքման տեսակը:
Սպասվող տեղեկատվության տեսակը հաճախորդ. Առավել տարածված արձագանքման տեսակը«Օհմը ծածկագիրն է, այսինքն հաճախորդ ակնկալում է ստանալ Լիազորման ծածկագիր.
Շրջանակ:
Սա պահանջվող թույլտվությունների մանրամասն նկարագրությունն է հաճախորդ'y, օրինակ՝ տվյալներ մուտք գործելը կամ որոշակի գործողություններ կատարելը:
Համաձայնություն:
Թույլտվության սերվեր տեւում է Շրջանակներումխնդրեց հաճախորդ«օմ, և հարցնում է Ռեսուրսների սեփականատեր«ա, նա պատրա՞ստ է տրամադրել հաճախորդ«ունենալ համապատասխան թույլտվություններ:
Հաճախորդի նույնականացում:
Այս ID-ն օգտագործվում է նույնականացման համար հաճախորդ'a on Թույլտվության սերվերե.
Հաճախորդի գաղտնիք:
Սա այն գաղտնաբառը է, որը միայն հայտնի է հաճախորդդու և Թույլտվության սերվերժամը. Այն թույլ է տալիս նրանց կիսվել տեղեկատվությունը մասնավոր կերպով:
Լիազորման ծածկագիր:
Ժամանակավոր կոդ՝ վավերականության կարճ ժամկետով, որը հաճախորդ տրամադրում է Թույլտվության սերվեր-ի դիմաց Մուտքի նշան.
Մուտքի նշան:
Բանալին, որը հաճախորդը կօգտագործի շփվելու համար ռեսուրսների սերվեր«օմ. Մի տեսակ կրծքանշան կամ բանալի քարտ, որն ապահովում է հաճախորդ«տվյալներ պահանջելու կամ գործողություններ կատարելու թույլտվություն ունենալ ռեսուրսների սերվերես քո անունից:
ՆշումԵրբեմն թույլտվության սերվերը և ռեսուրսների սերվերը նույն սերվերն են: Այնուամենայնիվ, որոշ դեպքերում դրանք կարող են լինել տարբեր սերվերներ, նույնիսկ եթե դրանք չեն պատկանում նույն կազմակերպությանը: Օրինակ, լիազորման սերվերը կարող է լինել երրորդ կողմի ծառայություն, որը վստահում է ռեսուրսների սերվերին:
Այժմ, երբ մենք լուսաբանեցինք OAuth 2.0-ի հիմնական հասկացությունները, եկեք վերադառնանք մեր օրինակին և ավելի մոտիկից նայենք, թե ինչ է տեղի ունենում OAuth հոսքում:
դու, Ռեսուրսների սեփականատեր, ցանկանում եք տրամադրել Օրվա սարսափելի բառախաղ ծառայությունը (հաճախորդy) մուտք դեպի ձեր կոնտակտներ, որպեսզի նրանք կարողանան հրավերներ ուղարկել ձեր բոլոր ընկերներին:
հաճախորդ վերահղում է զննարկիչը դեպի էջ Թույլտվության սերվեր«ա» և ներառել հարցման մեջ Հաճախորդի նույնականացում, Վերահղման URI, արձագանքման տեսակը և մեկ կամ ավելի Շրջանակներում (թույլտվություններ) այն պետք է:
Թույլտվության սերվեր ստուգում է ձեզ՝ անհրաժեշտության դեպքում խնդրելով օգտանուն և գաղտնաբառ:
Թույլտվության սերվեր ցուցադրում է ձև Համաձայնություն (հաստատումներ) բոլորի ցանկով Շրջանակներումխնդրեց հաճախորդ«օմ. Դուք համաձայն եք կամ մերժում եք:
Թույլտվության սերվեր վերահղում է ձեզ կայք հաճախորդ«ա, օգտագործելով Վերահղման URI հետ Լիազորման ծածկագիր (լիազորման կոդը):
հաճախորդ անմիջականորեն շփվում է Թույլտվության սերվերօհմ (շրջանցելով զննարկիչը Ռեսուրսների սեփականատեր«ա) և ապահով կերպով ուղարկում է Հաճախորդի նույնականացում, Հաճախորդի գաղտնիք и Լիազորման ծածկագիր.
Թույլտվության սերվեր ստուգում է տվյալները և պատասխանում Մուտքի նշան'om (մուտքի նշան):
Հիմա հաճախորդ կարող է օգտագործել Մուտքի նշան հարցում ուղարկելու համար ռեսուրսների սերվեր կոնտակտների ցուցակ ստանալու համար:
Հաճախորդի ID և գաղտնիք
Օրվա սարսափելի բառախաղին ձեր կոնտակտներ մուտք գործելու թույլտվությունից շատ առաջ հաճախորդը և լիազորման սերվերը հաստատել էին աշխատանքային հարաբերություններ: Թույլտվության սերվերը ստեղծել է Հաճախորդի ID-ն և Հաճախորդի Գաղտնիքը (երբեմն կոչվում է Հավելվածի ID- ն и Հավելվածի գաղտնիքը) և ուղարկեց դրանք Հաճախորդին OAuth-ի շրջանակներում հետագա փոխգործակցության համար:
"- Բարեւ Ձեզ! Ես կցանկանայի աշխատել ձեզ հետ: - Իհարկե, խնդիր չէ: Ահա ձեր հաճախորդի ID-ն և գաղտնիքը»:
Անունը ենթադրում է, որ Հաճախորդի Գաղտնիքը պետք է գաղտնի մնա, որպեսզի դա իմանան միայն Հաճախորդը և Լիազորման Սերվերը: Ի վերջո, նրա օգնությամբ է, որ լիազորման սերվերը հաստատում է Հաճախորդի ճշմարտացիությունը:
Բայց սա դեռ ամենը չէ... Խնդրում ենք ողջունել OpenID Connect-ը:
OAuth 2.0-ը նախատեսված է միայն թույլտվություն - տվյալների և գործառույթների հասանելիություն ապահովել մի հավելվածից մյուսը: OpenID միացում (OIDC) OAuth 2.0-ի վերևում գտնվող բարակ շերտ է, որն ավելացնում է օգտատիրոջ մուտքի և պրոֆիլի մանրամասները, ով մուտք է գործել հաշիվ: Մուտք գործելու նիստի կազմակերպումը հաճախ կոչվում է իսկությունը[նույնականացում]և համակարգ մուտք գործած օգտատիրոջ մասին տեղեկատվություն (այսինքն՝ մասին Ռեսուրսների սեփականատերե), - անձնական տվյալներ[ինքնություն]. Եթե լիազորման սերվերը աջակցում է OIDC-ին, այն երբեմն կոչվում է որպես անձնական տվյալների մատակարար[ինքնության մատակարար]քանի որ ապահովում է հաճախորդ-ի մասին տեղեկություններ ունեք Ռեսուրսների սեփականատերե.
OpenID Connect-ը թույլ է տալիս իրականացնել սցենարներ, որտեղ մեկ մուտք կարող է օգտագործվել մի քանի հավելվածներում. այս մոտեցումը հայտնի է նաև որպես. միայնակ գրանցում (SSO): Օրինակ, հավելվածը կարող է աջակցել SSO-ի ինտեգրմանը սոցիալական ցանցերի հետ, ինչպիսիք են Facebook-ը կամ Twitter-ը՝ թույլ տալով օգտվողներին օգտագործել այն հաշիվը, որն արդեն ունեն և նախընտրում են օգտագործել:
Հոսքը (հոսքը) OpenID Connect-ի տեսքը նույնն է, ինչ OAuth-ի դեպքում: Միակ տարբերությունն այն է, որ առաջնային հարցումում օգտագործվում է հատուկ շրջանակը openid, - Ա հաճախորդ ի վերջո նման է լինում Մուտքի նշանԻսկ ID նշան.
Ինչպես OAuth հոսքում, Մուտքի նշան OpenID Connect-ում սա որոշակի արժեք է, որը պարզ չէ հաճախորդժամը. Տեսանկյունից հաճախորդ‘а Մուտքի նշան ներկայացնում է նիշերի մի շարան, որը փոխանցվում է յուրաքանչյուր խնդրանքի հետ մեկտեղ ռեսուրսների սերվեր'y, որը որոշում է, թե արդյոք նշանը վավեր է: ID նշան բոլորովին այլ բան է ներկայացնում:
ID Token-ը JWT է
ID նշան նիշերի հատուկ ձևաչափված տող է, որը հայտնի է որպես JSON Web Token կամ JWT (երբեմն JWT նշաններն արտասանվում են «ջոտերի» նման). Դրսի դիտորդներին JWT-ն կարող է անհասկանալի շփոթություն թվալ, բայց հաճախորդ կարող է հանել տարբեր տեղեկություններ JWT-ից, ինչպիսիք են ID-ն, օգտվողի անունը, մուտքի ժամանակը, ժամկետի ավարտը ID նշան«ա, JWT-ին միջամտելու փորձերի առկայություն։ Տվյալները ներսում ID նշան«ա կոչվում են հավելվածներ[պնդումները].
OIDC-ի դեպքում կա նաև ստանդարտ ձև, որով հաճախորդ կարող է լրացուցիչ տեղեկություններ պահանջել անձի մասին [ինքնություն] - ից Թույլտվության սերվեր«ա, օրինակ, էլփոստի հասցե օգտագործելով Մուտքի նշան.
Իմացեք ավելին OAuth-ի և OIDC-ի մասին
Այսպիսով, մենք հակիրճ վերանայեցինք, թե ինչպես են աշխատում OAuth-ը և OIDC-ն: Պատրա՞ստ եք խորանալ: Ահա լրացուցիչ ռեսուրսներ, որոնք կօգնեն ձեզ ավելին իմանալ OAuth 2.0-ի և OpenID Connect-ի մասին.