Ուղեցույցներ

Ի՞նչ է OAuth-ը։ «Sign in with Google»-ը և պատվիրակված հասանելիությունը

OAuth-ը բաց ստանդարտ է, որը թույլ է տալիս օգտատիրոջը սահմանափակ մուտք տալ մի հավելվածի իր հաշվին մեկ այլ ծառայության վրա՝ առանց իր գաղտնաբառը փոխանցելու։ Երբ սեղմում եք «Connect Google Calendar» և տեսնում եք էկրան, որը հարցնում է՝ «Թույլ տա՞լ այս հավելվածին տեսնել ձեր իրադարձությունները», դա OAuth է։ Հավելվածը ստանում է token, որը ճշգրիտ համապատասխանում է այն բանին, ինչ հաստատել եք, և որը կարող եք ցանկացած պահի չեղարկել։ Նույն մեխանիզմը, լրացուցիչ OpenID Connect շերտով, ապահովում է «Sign in with Google» և նմանատիպ կոճակները։

Ինչու է OAuth-ը կարևոր AI-ով կառուցելիս

OAuth-ը երկու տարածված իրավիճակում է հայտնվում, երբ հավելված եք կառուցում․

  1. Սոցիալական մուտք։ Ուզում եք, որ ձեր օգտատերերը մուտք գործեն «Sign in with Google» (կամ Apple, Microsoft, GitHub) կոճակով՝ առանց մեկ ուրիշ գաղտնաբառ ստեղծելու։ Տես ինչպես ավելացնել մուտք ձեր հավելվածին։
  2. Միանալ օգտատերերի հաշիվներին այլ ծառայություններում։ Ձեր հավելվածին պետք է կարդալ օգտատիրոջ օրացույցը, գրառումներ անել նրա սոցիալական հաշվում, վերցնել ֆայլեր նրա cloud drive-ից կամ համաժամեցնել հաշվապահական տվյալները։

Ամեն դեպքում ձեր AI կառուցողը կարող է գրել կոդը, բայց որոշ քայլեր միայն դուք կարող եք անել․ ստեղծել մշակողական հավելված մատակարարի հետ, ստանալ client ID և client secret, գրանցել callback URL-ներ և, որոշ թույլտվությունների համար, անցնել մատակարարի վերանայումը։ OAuth-ի իմացությունը այդ քայլերը և դրանց տված սխալները շատ պակաս առեղծվածային է դարձնում։ Մուտքի ավելի լայն պատկերի համար տես ինչ է authentication-ը։

Ամենօրյա անալոգիա

Մտածեք հյուրանոցի բանալու քարտի մասին։ Ժամանակ ընդունվելիս ռեսեպշնը ստուգում է, թե ով եք, ապա տալիս է քարտ, որ բացում է ձեր սենյակը և մարզասրահը՝ ոչ այլ սենյակներ, ոչ աշխատակիցների տարածքներ, և դադարում է աշխատել ելքի ժամանակ։ Քարտը ձեր անձնագիրը չի պարունակում։ Եթե այն կորչի, ռեսեպշնը չեղարկում է այն և տալիս նորը։

  • Ռեսեպշնը թույլտվության սերվերն է (Google-ի մուտքի էջը)։
  • Ձեր ինքնության ստուգումը Google-ում ձեր մուտքն է։
  • Բանալու քարտը access token-ն է։
  • «Սենյակը և մարզասրահը միայն» ձեր հաստատած scope-երն են։
  • Ելքը token-ի ժամկետի ավարտն է, կամ դուք հասանելիությունը չեղարկում եք։

Հավելվածը, որ օգտագործում եք, երբեք չի տեսնում ձեր Google գաղտնաբառը, միայն բանալու քարտը։

Ինչպես է աշխատում OAuth-ը, քայլ առ քայլ

Վեբ հավելվածների համար ամենատարածված հոսքը authorization code flow-ն է։ Ահա, թե ինչ է լինում, երբ օգտատերը միացնում է իր Google Calendar-ը ժամանակացույցի հավելվածին․

  1. Սեղմում։ Օգտատերը սեղմում է «Connect Google Calendar»։
  2. Վերահղում մատակարարին։ Հավելվածը բրաուզերն ուղարկում է Google, իր client ID-ով, պահանջվող scope-երով (կարդալ օրացույցի իրադարձությունները) և redirect URI-ով, որտեղ Google-ը պետք է վերադարձնի օգտատիրոջը։
  3. Մուտք և համաձայնություն։ Օգտատերը մուտք է գործում Google-ում (եթե արդեն չի արել) և տեսնում է համաձայնության էկրան՝ թվարկելով, թե ինչ է հարցնում հավելվածը։ Սեղմում է Allow։
  4. Վերադարձ կոդով։ Google-ը բրաուզերը վերահղում է հավելվածի redirect URI՝ կարճաժամկետ, մեկանգամյա authorization code-ով։
  5. Փոխանակում սերվերում։ Հավելվածի սերվերը այդ կոդը, գումարած իր client secret-ը, ուղղակիորեն ուղարկում է Google-ին և ստանում access token (և հաճախ refresh token)։
  6. API-ի օգտագործում։ Սերվերը կանչում է Google Calendar API-ն access token-ով և ստանում օգտատիրոջ իրադարձությունները։

Քայլ 4-ի callback-ը նման է սրան՝

https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9

Եվ քայլ 5-ի token պատասխանը JSON է այսպես՝

{
  "access_token": "ya29.a0Af...",
  "expires_in": 3599,
  "refresh_token": "1//0gL...",
  "scope": "https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

Կարևոր նախագծային կետը․ token-ի փոխանակումը տեղի է ունենում սերվեր-սերվեր, ուստի client secret-ը և token-ները երբեք պետք չէ անցնեն բրաուզերով։

OAuth vs OpenID Connect vs ձեր սեփական մուտքը

Ինչին է պատասխանումՕրինակ
OAuth 2.0«Ինչ կարող է անել այս հավելվածը օգտատիրոջ անունից» (թույլտվություն)Կարդալ օգտատիրոջ օրացույցը
OpenID Connect (OIDC)«Ո՞վ է այս օգտատերը» (նույնականացում), OAuth-ի վրա կառուցված«Sign in with Google»-ը, որ վերադարձնում է ստուգված էլ. փոստ
Ձեր սեփական մուտքը«Արդյո՞ք սա ճիշտ գաղտնաբառն է այս հաշվի համար»Էլ. փոստ և գաղտնաբառ (հեշավորված) ձեր տվյալների բազայում

Շատ հավելվածներ համատեղում են դրանք․ էլ. փոստ-գաղտնաբառ մուտք, գումարած «Sign in with Google» OIDC-ով, գումարած առանձին OAuth միացումներ այլ ծառայությունների հետ։

Հիմնական տերմիններ

ՏերմինՆշանակություն
Մատակարար / թույլտվության սերվերԾառայությունը, որ օգտատերը մուտք է գործում և հասանելիություն տալիս՝ Google, Microsoft, GitHub։
ClientՁեր հավելվածը, ինչպես գրանցված է մատակարարի մոտ։
Client IDՁեր հավելվածի հանրային նույնացուցիչը մատակարարի մոտ։
Client secretՁեր հավելվածի գաղտնի գաղտնաբառը մատակարարի հետ։ Միայն սերվերում։
ScopeԿոնկրետ թույլտվություն, օրինակ՝ «կարդալ օրացույցը» կամ «տեսնել էլ. փոստի հասցեն»։
Համաձայնության էկրան (consent screen)Էջ, որտեղ օգտատերը տեսնում և հաստատում է պահանջվող scope-երը։
Redirect URI / callback URLԱյն, որտեղ մատակարարը վերադարձնում է օգտատիրոջը։ Պետք է նախապես գրանցվի և ճշգրիտ համընկնի։
Access tokenԿարճաժամկետ հավատարմագիր API-ն կանչելու համար։
Refresh tokenԱվելի երկարաժամկետ հավատարմագիր նոր access token-ներ ստանալու համար։ Պահեք այն գաղտնաբառի պես։
ID tokenOIDC-ում՝ ստորագրված token, որ նկարագրում է, թե ով է օգտատերը։
PKCEԼրացուցիչ ստուգում («proof key»), որ կանխում է գողացված կոդերի օգտագործումը։ Խորհուրդ է տրվում բոլոր client-ների համար։
stateՊատահական արժեք, որ պաշտպանում է հոսքը կեղծ հարցումներից։

Սովորական թյուրըմբռնումներ

  • «OAuth-ը մուտքի համակարգ է»։ Պարզ OAuth-ը տալիս է հասանելիություն, իսկ նույնականացումը OpenID Connect-ն է անում։ Մերկ access token-ը որպես ապացույց, թե ով է մարդը, իրական անվտանգության սխալների պատճառ է եղել։
  • «Հավելվածը ստանում է իմ գաղտնաբառը»։ Երբեք։ Դա է հենց կետը։
  • «Ավելի շատ scope-եր խնդրելը անվնաս է»։ Օգտատերերը ավելի զգույշ են լայն հարցումների նկատմամբ, և մատակարարները, ինչպես Google-ը, կարող են պահանջել հավելվածի վերանայում զգայուն կամ սահմանափակ scope-երի համար։ Խնդրեք միայն այն, ինչ պետք է։
  • «Client secret-ը կարող է լինել frontend-ում»։ Ամեն ինչ, որ բրաուզերի կոդում է, հանրային է։ Պահեք այն սերվերային գաղտնիքներում։
  • «Աշխատում է թեստավորման մեջ, ուրեմն կաշխատի արտադրության մեջ»։ Մատակարարները հաճախ սահմանափակում են չհաստատված հավելվածները, օրինակ՝ ցուցակված թեստային օգտատերերով, և ձեր կենդանի դոմենի redirect URI-ը պետք է առանձին գրանցվի։
  • «Token-ները երբեք չեն ավարտվում»։ Access token-ները արագ են ժամկետանց լինում, և օգտատերերը կարող են թույլտվությունը չեղարկել։ Ձեր հավելվածը պետք է կարողանա երկուսն էլ դիմանալ։

Ինչ հարցնել ձեր AI կառուցողից

  • «Ավելացրու «Sign in with Google»՝ OpenID Connect-ով և լավ պահպանվող մուտքի գրադարանով․ OAuth հոսքը ձեռքով մի գրիր։»
  • «Օգտագործիր authorization code flow PKCE-ով և ստուգիր state պարամետրը։»
  • «Կարդա client ID-ն և client secret-ը սերվերում՝ միջավայրի փոփոխականներից։»
  • «Խնդրիր միայն մեզ անհրաժեշտ scope-երը՝ միայն կարդալու օրացույցի հասանելիություն։»
  • «Ասա ինձ բոլոր redirect URL-ները, որ պետք է գրանցեմ մատակարարի կոնսոլում՝ նախադիտման, հրապարակված URL-ի և անհատական դոմենի համար։»
  • «Պահիր refresh token-ները կոդավորված տվյալների բազայում և վարվիր ժամկետանց կամ չեղարկված token-ների հետ՝ օգտատիրոջից խնդրելով նորից միանալ։»
  • «Թույլ տուր օգտատերերին անջատել ինտեգրումը իրենց կարգավորումների էջից։»

OAuth-ը և Mythex-ը

Mythex-ը չունի ներկառուցված վերջնական օգտատիրոջ մուտք կառուցած հավելվածների համար․ իր փաստաթղթերը նկարագրում են «բեր քո սեփականը» (bring-your-own) մոտեցում․ ընտրում եք նույնականացման գրադարան կամ հոսթված մատակարար, պահում եք դրա բանալիները որպես նախագծի գաղտնիքներ, իսկ agent-ը գրում է կոդը։ Authentication ավելացնելու բաղադրատոմսը ունի սկզբնական հուշում դրա համար։ OAuth-ի հետ նաև հանդիպում եք Mythex-ում հենց ինքնին․ կարող եք մուտք գործել Google-ով, GitHub-ը միացնելը repo համաժամեցման համար օգտագործում է GitHub OAuth, իսկ AI օգնականները, որոնք միանում են Mythex-ին MCP-ով, անցնում են OAuth համաձայնության էջով։ Ավելին՝ տես ինչ է authentication-ը և ինչ է երկուական նույնականացումը։

Հարցեր

Ի՞նչ է OAuth-ը պարզ բառերով։

OAuth-ը ստանդարտ եղանակ է, որով օգտատերը թույլ է տալիս մի հավելվածին մուտք ունենալ իր հաշվին մեկ այլ ծառայության վրա՝ առանց իր գաղտնաբառը տալու։ Օրինակ՝ ժամանակացույցի հավելվածը կարդա նրա Google Calendar-ը։ Օգտատերը հաստատում է կոնկրետ թույլտվությունները, և հավելվածը ստանում է token, որ օգտագործում է միայն դրանց համար։

Արդյո՞ք OAuth-ը նույնն է, ինչ «Sign in with Google»-ը։

«Sign in with Google»-ը կառուցված է OAuth 2.0-ի և OpenID Connect-ի վրա։ OpenID Connect-ը OAuth-ի վրա ավելացված շերտ է, որ տալիս է ստանդարտ եղանակ՝ հավելվածին ասելու, թե ով է օգտատերը։ Ինքնին OAuth-ը վերաբերում է հասանելիության տրամադրմանը, իսկ OpenID Connect-ն է այն դարձնում մուտք։

Ի՞նչ է OAuth access token-ը։

Access token-ը այն հավատարմագիրն է, որը հավելվածն ուղարկում է ծառայության API-ին՝ ապացուցելու, որ հասանելիություն է ստացել։ Սովորաբար կարճաժամկետ է և սահմանափակված է օգտատիրոջ հաստատած թույլտվություններով (scope-երով)։ Refresh token-ը, եթե տրվել է, թույլ է տալիս հավելվածին ստանալ նոր access token-ներ՝ առանց օգտատիրոջից նորից հարցնելու։

Ի՞նչ է նշանակում redirect_uri_mismatch-ը։

Այն նշանակում է, որ մուտքի ժամանակ հավելվածի ուղարկած callback URL-ը ճշգրիտ չի համընկնում մատակարարի developer կոնսոլում գրանցվածի հետ։ Ավելացրեք ճշգրիտ URL-ը՝ ներառյալ https-ը, դոմենը, ուղին և վերջնական սլաշը՝ յուրաքանչյուր հասցեի համար, որտեղ աշխատում է ձեր հավելվածը։

Արդյո՞ք OAuth-ը անվտանգ է։

OAuth 2.0-ն լայնորեն օգտագործվում է և անվտանգ է, երբ ճիշտ է իրականացված․ օգտագործում է authorization code flow-ն PKCE-ով, ճշգրիտ redirect URL-ներ, state պարամետրը և պահում է client secret-ը և token-ները սերվերի վրա։ Խնդիրների մեծ մասը գալիս է իրականացման դյուրինացումներից, ուստի խորհուրդ է տրվում օգտագործել լավ պահպանվող գրադարան։

Mythex · Pricing · Կառուցեք ամեն ինչ AI-ով · Կաղապարներ կայքերի և հավելվածների համար · Mythex-ի համեմատությունները · AI-ով հավելվածների ստեղծման բառարան · Անվճար գործիքներ AI-ով հավելվածներ ստեղծելու համար · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)