OAuth ምንድን ነው? «በGoogle ይግቡ» እና የተወከለ መዳረሻ ተብራርቷል
OAuth ተጠቃሚ ለአንድ መተግበሪያ በሌላ አገልግሎት ላይ ባለው መለያ ላይ የተገደበ መዳረሻ እንዲሰጥ የሚፈቅድ ክፍት መደበኛ ነው፤ ይለፍ ቃሉን ሳያስረክብ። «Connect Google Calendar» ን ጠቅ ሲያደርጉ «ይህ መተግበሪያ ዝግጅቶቼን ማየት ይችላል?» የሚለውን ማያ ገጽ ሲመለከቱ፣ ያ OAuth ነው። መተግበሪያው ያጸደቁትን ብቻ የሚመለከት ቶከን ያገኛል፤ ይህንንም በማንኛውም ጊዜ መሻር ይችላሉ። ተመሳሳዩ ዘዴ፣ ከተጨማሪ OpenID Connect ንብርብር ጋር፣ «በGoogle ይግቡ» እና ተመሳሳይ አዝራሮችን ያበረታል።
ከAI ጋር ሲገነቡ OAuth ለምን ጠቃሚ ነው
OAuth መተግበሪያ ሲገነቡ በሁለት የተለመዱ ሁኔታዎች ይታያል፦
- ማኅበራዊ መግቢያ። ተጠቃሚዎችዎ ሌላ የይለፍ ቃል ከመፍጠር ይልቅ «በGoogle ይግቡ» (ወይም Apple፣ Microsoft፣ GitHub) እንዲጠቀሙ ይፈልጋሉ። መተግበሪያዎ መግቢያ እንዴት እንደሚጨመር ይመልከቱ።
- ከተጠቃሚዎች መለያዎች ጋር በሌሎች አገልግሎቶች ላይ መገናኘት። መተግበሪያዎ የተጠቃሚን ቀን መቁጠሪያ ማንበብ፣ በማህበራዊ መለያ መለጠፍ፣ ከክላውድ ድራይቭ ፋይሎችን መጎተት ወይም የሂሳብ መረጃ ማመሳሰል ያስፈልገዋል።
በሁለቱም ሁኔታዎች የAI መገንቢያዎ ኮዱን ሊጽፍ ይችላል፤ አንዳንድ ደረጃዎች ግን እርስዎ ብቻ ማድረግ የሚችሉት ናቸው፦ ከአቅራቢው ጋር የገንቢ መተግበሪያ መፍጠር፣ client ID እና client secret ማግኘት፣ የመመለሻ URLs መመዝገብ፣ እና ለአንዳንድ ፈቃዶች የአቅራቢው ግምገማ ማለፍ። OAuth እንዴት እንደሚሰራ ማወቅ እነዚያን ደረጃዎችና ስህተቶቻቸውን ያን ያህል እንግዳ አያደርግም። ለመግቢያ ትልቁ ምስል ማረጋገጫ ምንድን ነው ይመልከቱ።
ዕለታዊ ምሳሌ
የሆቴል ቁልፍ ካርድ አስቡ። በመግቢያ ጊዜ ጠረጴዛው ማን እንደሆኑ ያረጋግጣል፣ ከዚያም ክፍልዎንና ጂም ብቻ የሚከፍት — ሌሎች ክፍሎችንና የሰራተኛ ቦታዎችን የማይከፍት — እና ከመውጫ ጊዜ በኋላ የማይሰራ ካርድ ይሰጥዎታል። ካርዱ ፓስፖርትዎን አይይዝም። ካጡት ጠረጴዛው ይሰርዘዋል እና አዲስ ይሰጥዎታል።
- የፊት ጠረጴዛው የፈቀዳ ሰርቨሩ ነው (የGoogle መግቢያ ገጽ)።
- የማንነት ፍተሻዎ በGoogle መግባትዎ ነው።
- የቁልፍ ካርዱ access token ነው።
- «ክፍሉና ጂሙ ብቻ» እርስዎ ያጸደቋቸው scopes ናቸው።
- መውጫው ቶከኑ ሲያልቅ፣ ወይም እርስዎ መዳረሻውን ሲሽሩ ነው።
እርስዎ የሚጠቀሙት መተግበሪያ የGoogle ይለፍ ቃልዎን በጭራሽ አያይም፤ ካርዱን ብቻ ያያል።
OAuth ደረጃ በደረጃ እንዴት ይሰራል
ለድር መተግበሪያዎች በጣም የተለመደው ፍሰት authorization code flow ነው። ተጠቃሚ Google ቀን መቁጠሪያውን ከቀጠሮ መተግበሪያ ጋር ሲያገናኝ የሚሆነው፦
- ጠቅ ማድረግ። ተጠቃሚው «Connect Google Calendar» ን ጠቅ ያደርጋል።
- ወደ አቅራቢው መምራት። መተግበሪያው አሳሹን ወደ Google ይልካል፤ ከclient ID፣ ከሚፈልጋቸው scopes (የቀን መቁጠሪያ ዝግጅቶችን ማንበብ) እና Google ተጠቃሚውን መልሶ የሚልክበትን redirect URI ጋር።
- መግባትና ፈቃድ። ተጠቃሚው (ካልገባ) ወደ Google ይገባል እና የሚጠየቀውን የሚዘረዝር የፈቃድ ማያ ገጽ ያያል። Allow ላይ ጠቅ ያደርጋል።
- በኮድ ተመልሶ። Google አሳሹን በአጭር ዕድሜ ያለ፣ አንድ ጊዜ ብቻ የሚሰራ authorization code ይዞ ወደ መተግበሪያው redirect URI ይመልሰዋል።
- በሰርቨሩ መለዋወጥ። የመተግበሪያው ሰርቨር ያንን ኮድ፣ ከclient secret ጋር፣ በቀጥታ ወደ Google ይልካል እና access token (እና ብዙ ጊዜ refresh token) ይቀበላል።
- API መጠቀም። ሰርቨሩ Google Calendar API በaccess tokenው ይጠራል እና የተጠቃሚውን ዝግጅቶች ያገኛል።
በደረጃ 4 ያለው ጥሪ እንዲህ ይመስላል፦
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
እና በደረጃ 5 ያለው የቶከን ምላሽ JSON እንዲህ ነው፦
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
ዋናው የዲዛይን ነጥብ፦ የቶከን ልውውጡ በሰርቨር-ወደ-ሰርቨር ይከናወናል፤ ስለዚህ client secret እና ቶከኖች ወደ አሳሹ መሄድ አያስፈልጋቸውም።
OAuth vs OpenID Connect vs የራስዎ መግቢያ
| ምን ይመልሳል | ምሳሌ | |
|---|---|---|
| OAuth 2.0 | «ይህ መተግበሪያ በተጠቃሚው ስም ምን ማድረግ ይፈቀድለታል?» (ፈቀዳ) | የተጠቃሚን ቀን መቁጠሪያ ማንበብ |
| OpenID Connect (OIDC) | «ይህ ተጠቃሚ ማን ነው?» (ማረጋገጫ)፣ በOAuth ላይ የተገነባ | «በGoogle ይግቡ» የተረጋገጠ ኢሜይል ሲመልስ |
| የራስዎ መግቢያ | «ይህ ለዚህ መለያ ትክክለኛው የይለፍ ቃል ነው?» | በዳታቤዝዎ ውስጥ የተቀመጠ (hashed) ኢሜይልና የይለፍ ቃል |
ብዙ መተግበሪያዎች ያዋህዷቸዋል፦ ኢሜይልና የይለፍ ቃል መግቢያ፣ በOIDC በኩል «በGoogle ይግቡ»፣ እና ለሌሎች አገልግሎቶች የተለየ OAuth ግንኙነቶች።
ቁልፍ ቃላት
| ቃል | ትርጉም |
|---|---|
| Provider / authorization server | ተጠቃሚው የሚገባበትና መዳረሻ የሚሰጥበት አገልግሎት — Google፣ Microsoft፣ GitHub። |
| Client | ከአቅራቢው ጋር እንደተመዘገበ የእርስዎ መተግበሪያ። |
| Client ID | የመተግበሪያዎ ይፋዊ መለያ ከአቅራቢው ጋር። |
| Client secret | የመተግበሪያዎ የግል የይለፍ ቃል ከአቅራቢው ጋር። በሰርቨር-ብቻ። |
| Scope | የተወሰነ ፈቃድ፣ ለምሳሌ «ቀን መቁጠሪያ ማንበብ» ወይም «የኢሜይል አድራሻ ማየት»። |
| Consent screen | ተጠቃሚው የተጠየቁ scopesን የሚያይበትና የሚያጸድቅበት ገጽ። |
| Redirect URI / callback URL | አቅራቢው ተጠቃሚውን መልሶ የሚልክበት ቦታ። አስቀድሞ መመዝገብ አለበት እና በትክክል መዛመድ አለበት። |
| Access token | ኤፒአይውን ለመጥራት የሚያገለግል የአጭር ጊዜ ምስክርነት። |
| Refresh token | አዲስ access tokens ለማግኘት የሚያገለግል ረዘም ያለ ምስክርነት። እንደ የይለፍ ቃል ያስቀምጡት። |
| ID token | በOIDC ውስጥ ተጠቃሚው ማን እንደሆነ የሚገልጽ የተፈረመ ቶከን። |
| PKCE | የተያዙ ኮዶች እንዳይጠቀሙባቸው የሚከለክል ተጨማሪ ፍተሻ («proof key»)። ለሁሉም ደንበኞች ይመከራል። |
| state | ፍሰቱን ከተሰረቁ ጥያቄዎች የሚጠብቅ የዘፈቀደ እሴት። |
የተሳሳቱ ግንዛቤዎች
- «OAuth የመግቢያ ስርዓት ነው።» ተራ OAuth መዳረሻ ይሰጣል፤ ማንነትን OpenID Connect ይቆጣጠራል። ባዶ access tokenን ሰው ማን እንደሆነ ማረጋገጫ አድርጎ መጠቀም እውነተኛ የደህንነት ስህተቶችን አስከትሏል።
- «መተግበሪያው የይለፍ ቃሌን ያገኘዋል።» በጭራሽ አያገኝም። ነጥቡም ይሄ ነው።
- «ተጨማሪ scopes መጠየቅ ጉዳት የለውም።» ተጠቃሚዎች ሰፊ ጥያቄዎችን ይጠራጠራሉ፤ እንደ Google ያሉ አቅራቢዎች ለስሱ ወይም ለተገደቡ scopes የመተግበሪያ ግምገማ ሊጠይቁ ይችላሉ። የሚያስፈልግዎትን ብቻ ይጠይቁ።
- «client secret በfrontend ውስጥ ሊሆን ይችላል።» በአሳሽ ኮድ ውስጥ ያለ ሁሉ ይፋዊ ነው። በሰርቨር-ጎን ምስጢሮች ያስቀምጡት።
- «በሙከራ ከሰራ በቀጥታም ይሰራል።» አቅራቢዎች ያልተረጋገጡ መተግበሪያዎችን ብዙ ጊዜ ይገድባሉ — ለምሳሌ ወደተዘረዘሩ የሙከራ ተጠቃሚዎች — እና የቀጥታ ጎራዎ መመለሻ URL ለብቻው መመዝገብ አለበት።
- «ቶከኖች ለዘላለም ይቆያሉ።» Access tokens በፍጥነት ያልቃሉ፤ ተጠቃሚዎችም መዳረሻን ሊሽሩ ይችላሉ። መተግበሪያዎ ሁለቱንም በጸጋ መያዝ አለበት።
ለAI መገንቢያዎ ምን ብለው ይጠይቃሉ
- «በ«በGoogle ይግቡ»ን OpenID Connect በሚገባ በተጠበቀ የማረጋገጫ ቤተ መጻሕፍት ጨምር — የOAuth ፍሰቱን በእጅ አትጻፍ።»
- «authorization code flow ከPKCE ጋር ተጠቀም እና
stateparameterን አረጋግጥ።» - «client ID እና client secret በሰርቨር ላይ ከአካባቢ ተለዋዋጮች አንብብ።»
- «የምንፈልጋቸውን scopes ብቻ ጠይቅ፦ የቀን መቁጠሪያ ማንበብ ብቻ።»
- «በአቅራቢው ኮንሶል ውስጥ የምንመዘግባቸውን የመመለሻ URLs ሁሉ ንገረኝ — ለቅድመ-እይታው፣ ለታተመው URL እና ለብጁ ጎራዬ።»
- «የተመሰጠሩ refresh tokens በዳታቤዝ ውስጥ አስቀምጥ፤ ጊዜያቸው ያለፈ ወይም የተሰረዙ ቶከኖችን ተጠቃሚው እንደገና እንዲያገናኝ ጠይቅ።»
- «ተጠቃሚዎች ውህደቱን ከቅንብሮች ገጻቸው እንዲያቋርጡ ፍቀድ።»
OAuth በMythex
Mythex ለሚገነቧቸው መተግበሪያዎች አብሮ የተሰራ የተጠቃሚ መግቢያ የለውም፤ ሰነዶቹ «የራስዎን አምጡ» (bring-your-own) አቀራረብ ይገልጻሉ — የማረጋገጫ ቤተ መጻሕፍትን ወይም የሚተዳደር አቅራቢን ይመርጣሉ፣ ቁልፎቹን እንደ የፕሮጀክት ምስጢሮች ያስቀምጣሉ፣ ወኪሉ ኮዱን ይጽፋል። ማረጋገጫ ጨምር ምግብ አሰራር ለዚህ መነሻ ጥያቄ አለው። OAuthን በMythex ውስጥም ያጋጥሙታል፦ በGoogle መመዝገብ ይችላሉ፤ ለrepo ማመሳሰል GitHubን ማገናኘት GitHub OAuth ይጠቀማል፤ በMCP ከMythex ጋር የሚገናኙ AI ደንበኞች ደግሞ በOAuth ፈቃድ ገጽ ያልፋሉ። ለተጨማሪ ማረጋገጫ ምንድን ነው እና ሁለት-ደረጃ ማረጋገጫ ምንድን ነው ይመልከቱ።
ጥያቄዎች
OAuth በቀላል አነጋገር ምንድን ነው?
OAuth አንድ ተጠቃሚ አንድ መተግበሪያ በሌላ አገልግሎት ላይ ያለውን መለያ እንዲደርስ የሚፈቅድበት መደበኛ መንገድ ነው — ለምሳሌ የቀጠሮ መተግበሪያ የGoogle ቀን መቁጠሪያቸውን እንዲያነብ — ይለፍ ቃላቸውን ለመተግበሪያው ሳይሰጡ። ተጠቃሚው የተወሰኑ ፈቃዶችን ያጸድቃል፤ መተግበሪያውም ለዚያው ብቻ የሚጠቅም ቶከን ይቀበላል።
OAuth «በGoogle ይግቡ» ጋር አንድ ነው?
«በGoogle ይግቡ» በOAuth 2.0 እና በOpenID Connect ላይ ይገነባል። OpenID Connect ለመተግበሪያው ተጠቃሚው ማን እንደሆነ መደበኛ መንገድ የሚጨምር በOAuth ላይ ያለ ንብርብር ነው። ብቻውን OAuth መዳረሻ ስለመስጠት ነው፤ OpenID Connect ግን ወደ መግቢያ የሚቀይረው ነው።
OAuth access token ምንድን ነው?
Access token መተግበሪያው መዳረሻ እንደተሰጠው ለማረጋገጥ ወደ አገልግሎቱ API የሚልከው ምስክርነት ነው። ብዙውን ጊዜ የአጭር ጊዜ ዕድሜ ያለው ሲሆን በተጠቃሚው ባጸደቃቸው ፈቃዶች (scopes) የተወሰነ ነው። Refresh token ከተሰጠ ደግሞ ተጠቃሚውን ዳግም ሳይጠይቅ መተግበሪያው አዲስ access tokens ማግኘት ይችላል።
redirect_uri_mismatch ምን ማለት ነው?
ማለት በመግቢያው ወቅት መተግበሪያችሁ የላከው የመመለሻ URL በአቅራቢው የገንቢ ኮንሶል ውስጥ ከተመዘገበው ጋር በትክክል አይዛመድም ማለት ነው። መተግበሪያው በሚሰራበት እያንዳንዱ አድራሻ ትክክለኛውን URL ያክሉ — https፣ ጎራ፣ መንገድ እና ማንኛውም የመጨረሻ ስላሽ (/) ጨምሮ።
OAuth ደህንነቱ የተጠበቀ ነው?
OAuth 2.0 በትክክል ሲተገበር በሰፊው የሚያገለግልና ደህንነቱ የተጠበቀ ነው፦ authorization code flow ከPKCE ጋር፣ ትክክለኛ የመመለሻ URLs፣ state parameter መጠቀም፣ እና client secret እና ቶከኖችን በሰርቨር ላይ ማቆየት። አብዛኞቹ ችግሮች ከአተገባበር አቋራጮች የሚመጡ ናቸው፤ ለዚህ ነው በሚገባ የተጠበቀ ቤተ መጻሕፍት መጠቀም የሚመከር።