Authentication ምንድን ነው? Logins፣ Sessions እና OAuth በቀላል ማብራሪያ
Authentication መተግበሪያ ተጠቃሚው ማን እንደሆነ የሚያረጋግጥበት መንገድ ነው — ብዙውን ጊዜ የሚያውቁትን ነገር (የይለፍ ቃል)፣ ያሎትን ነገር (ወደ ስልክዎ ወይም ኢሜልዎ የተላከ ኮድ) ወይም ከሌላ የታመነ አገልግሎት የመጣ ማንነት (ለምሳሌ «በGoogle ይግቡ») በመፈተሽ። ተጠቃሚው ከተረጋገጠ በኋላ መተግበሪያው በእያንዳንዱ ገጽ ላይ ዳግም እንዳይገባ በsession ወይም token ያስታውሰዋል። ያንን የታወቀ ተጠቃሚ ምን ማድረግ እንደሚፈቀድለት መወሰን ደግሞ authorization የሚባል የተለየ ደረጃ ነው።
በAI ሲገነቡ ለምን አስፈላጊ ነው
Login መጨመር ሰዎች ለAI መገንቢያ ከሚጠይቋቸው በጣም የተለመዱ ጥያቄዎች አንዱ ነው፤ እና በስውር ለመሳሳት ቀላል ከሆኑትም አንዱ ነው። የlogin ገጽ ማመንጨት ቀላል ነው። አስቸጋሪው ነገር ዙሪያውን ያለው ሁሉ ነው፦
- የይለፍ ቃሎች በደህንነት ተቀምጠዋል?
- እያንዳንዱ የግል ገጽና እያንዳንዱ API endpoint ማን እንደሚጠይቅ በእርግጥ ይፈትሻል?
- የገባ ደንበኛ በURL ውስጥ ቁጥር በመቀየር የሌላ ደንበኛ ዳታ ማየት ይችላል?
- አንድ ሰው የይለፍ ቃሉን ቢረሳ ምን ይሆናል?
መተግበሪያ ሁሉንም እነዚህን ቢያሳልፍም በጣም ደህንነቱ የተጠበቀ ሊመስል ይችላል። የተንቀሳቃሽ ክፍሎቹን መረዳት ትክክለኛ ጥያቄዎችን እንዲጠይቁና ትክክለኛ ነገሮችን እንዲፈትሹ ይረዳዎታል።
ዕለታዊ ምሳሌ
ሆቴል ሲገቡ አስቡ።
በፊት ጠረጴዛ ላይ መታወቂያዎን ያሳያሉ። ይህ authentication ነው፦ ማን እንደሆኑ ማረጋገጥ። ከዚያ አስተናጋጁ የካርድ ቁልፍ ይሰጥዎታል። ይህ ካርድ session ነው፦ ለቀረው የቆይታዎ ጊዜ መታወቂያዎን ዳግም አያሳዩም፤ ካርዱን ብቻ ይነካሉ።
ካርዱ ክፍልዎን፣ ጂምናዚየሙንና ወደ ፎቅዎ የሚወስደውን ሊፍት ይከፍታል — ግን የሌሎች እንግዶች ክፍሎችን ወይም የሰራተኛ ቢሮን አይከፍትም። ይህ authorization ነው፦ መታወቂያዎ ምን መድረስ እንደሚፈቀድለት። ካርዱን ካጡ ሆቴሉ ጠረጴዛ ላይ ሊያቦዝነው ይችላል (session መሰረዝ)። ሲወጡ ይቆማል (logout ወይም ጊዜ ማለፍ)።
«በGoogle ይግቡ» ሆቴሉ መታወቂያዎን ራሱ ከመፈተሽ ይልቅ ታማኝ አጋር «ይህ እሱ/እሷ ናቸው» የሚል ደብዳቤ እንደሚቀበል ነው።
ዋና የlogin ዘዴዎች
| ዘዴ | እንዴት ይሠራል | ጥቅሞች | ጉዳቶች |
|---|---|---|---|
| ኢሜል + የይለፍ ቃል | ተጠቃሚው የይለፍ ቃል ይመርጣል፤ መተግበሪያው hash ያስቀምጣል | የታወቀ፣ ከውጭ ጥገኝነት የለውም | hashes በደህንነት ማስቀመጥና ዳግም ማስጀመርን ማስተናገድ አለብዎት |
| Magic link / የአንድ ጊዜ ኮድ | መተግበሪያው ተጠቃሚውን የሚያስገባ ሊንክ ወይም ኮድ በኢሜል ይልካል | የሚፈስ ወይም የሚረሳ ይለፍ ቃል የለም | በኢሜል መድረስ ላይ ይወሰናል፤ ለመግባት ቀርፋፋ ነው |
| ማኅበራዊ login (OAuth / OpenID Connect) | ተጠቃሚው በGoogle፣ Apple፣ GitHub ወዘተ ይገባል | ለተጠቃሚዎች ፈጣን፤ እርስዎ የይለፍ ቃል አያስቀምጡም | ከእያንዳንዱ አቅራቢ ጋር ማዋቀር፤ እነዚያ አካውንት የሌላቸው ተጠቃሚዎች |
| የተስተናገደ auth አቅራቢ | እንደ Clerk፣ Auth0 ወይም Supabase Auth ያለ አገልግሎት መመዝገብን፣ login እና ዳግም ማስጀመርን ያስተናግዳል | ለእርስዎ ያነሰ የደህንነት ስራ | በመጠን ወርሃዊ ወጪ፤ ሌላ ጥገኝነት |
| Multi-factor (MFA / 2FA) | ከመጀመሪያው በኋላ ሁለተኛ ማረጋገጫ፣ ለምሳሌ የauthenticator መተግበሪያ ኮድ | ለመጥለፍ በጣም ከባድ | ትንሽ ተጨማሪ ጥረት |
የይለፍ ቃሎች እንዴት መቀመጥ አለባቸው
ደህንነቱ የተጠበቀ መተግበሪያ የእርስዎን ትክክለኛ የይለፍ ቃል ፈጽሞ አያስቀምጥም። በምትኩ hash ያስቀምጣል፦ የይለፍ ቃሉን ወደ ቋሚ ሕብረቁምፊ የሚቀይር ወደ አንድ አቅጣጫ የሚሠራ ተግባር ውጤት። ሲገቡ መተግበሪያው የጻፉትን hash አድርጎ ከተቀመጠው hash ጋር ያወዳድረዋል።
ይህን ደህንነቱ የሚያደርጉ ሁለት ዝርዝሮች፦
- ጨው (salt) — እያንዳንዱ የይለፍ ቃል ከhash በፊት የሚጨመር የዘፈቀደ እሴት፣ ስለዚህ ተመሳሳይ የይለፍ ቃል ያላቸው ሁለት ሰዎች የተለያዩ hashes ያገኛሉ፤ አስቀድመው የተሰሉ የፍለጋ ሰንጠረዦችም ዋጋ የላቸውም።
- ለይለፍ ቃሎች የተሠራ ቀርፋፋ ስልተ ቀመር — እንደ Argon2፣ bcrypt ወይም scrypt። እንደ MD5 ወይም SHA-256 ያሉ አጠቃላይ ዓላማ hashes ብቻቸውን በጣም ፈጣን ናቸው፤ አጥቂዎች ቢሊዮን ግምቶችን ሊሞክሩ ይችላሉ።
Hashing ከencryption ጋር አንድ አይደለም። የተመሰጠረ ዳታ በቁልፍ ሊፈታ ይችላል፤ የይለፍ ቃል hash ግን ወደ ኋላ እንዳይመለስ ጨርሶ የተዘጋጀ ነው።
Sessions ከtokens ጋር
ከlogin በኋላ መተግበሪያው በእያንዳንዱ ጥያቄ ላይ እርስዎን ማወቅ አለበት። ሁለት የተለመዱ አቀራረቦች አሉ።
| Session (cookie) | Token (ለምሳሌ JWT) | |
|---|---|---|
| ብራውዘሩ የሚይዘው | በcookie ውስጥ የዘፈቀደ session ID | የተጠቃሚ መረጃና የማለፊያ ጊዜ የያዘ የተፈረመ token |
| የlogin ሁኔታ የሚኖርበት | በሰርቨር ላይ፣ በዳታቤዝ ወይም ማከማቻ ውስጥ | በtoken ራሱ ውስጥ |
| አንድን ሰው በሁሉም ቦታ ማስወጣት | ቀላል፦ session በሰርቨሩ ላይ ይሰርዙ | ከባድ፦ block-list ካልያዙ token እስኪያልቅ ድረስ ይሠራል |
| የተለመደ አጠቃቀም | ባህላዊ የድር መተግበሪያዎች | APIs፣ የሞባይል መተግበሪያዎች፣ እርስ በርስ የሚነጋገሩ አገልግሎቶች |
ለcookies ሦስት ቅንብሮች ይጠቅማሉ፦ HttpOnly (በገጹ ላይ ያለ JavaScript cookieውን ማንበብ አይችልም)፣ Secure (በHTTPS ላይ ብቻ ይላካል) እና SameSite (ከሌሎች ድረ-ገጾች በሚመጡ ጥያቄዎች ላይ መላኩን ይገድባል)። tokens በብራውዘሩ localStorage ውስጥ ማስቀመጥ የተለመደ ነው፤ ነገር ግን በገጹ ላይ በሚሠራ ማንኛውም ስክሪፕት ያጋልጣቸዋል።
OAuth እና «በGoogle ይግቡ»
OAuth 2.0 ለየተሰጠ ፈቃድ (delegated authorization) መደበኛ ሥርዓት ነው፦ መተግበሪያ የይለፍ ቃልዎን ፈጽሞ ሳያይ በሌላ አገልግሎት ላይ ባለዎት አካውንት የተወሰነ መዳረሻ — ለምሳሌ የGoogle Calendarዎን ለማንበብ — እንዲያገኝ ያስችለዋል። ወደ Google ይላካሉ፣ የተወሰኑ ፈቃዶችን (scopes ይባላሉ) ያጸድቃሉ፣ Google ደግሞ ለእነዚያ ፈቃዶች ብቻ token ለመተግበሪያው ይሰጣል።
OAuth ብቻውን የተነደፈው መዳረሻ ለመስጠት እንጂ ማንነትዎን ለመግለጽ አይደለም። OpenID Connect (OIDC) በOAuth 2.0 ላይ ማንነትን የሚጨምር ንብርብር ነው፤ «በGoogle ይግቡ» ወይም «በApple ይግቡ» የሚጠቀመው ይህንን ነው። ለማዋቀር መተግበሪያዎን በአቅራቢው ይመዘግባሉ፤ client ID እና client secret ያገኛሉ፤ secretው በሰርቨርዎ ላይ ይቆያል።
ምሳሌ፦ ለደንበኛ ፖርታል login
የዲዛይን ኤጀንሲ ደንበኞች ፕሮጀክቶቻቸውንና ደረሰኞቻቸውን የሚያዩበት ፖርታል እየገነቡ እንደሆነ እንበል።
- Authentication: ደንበኞች በኢሜልና magic link ይገባሉ፤ ስለዚህ የሚያስተዳድሯቸው የይለፍ ቃሎች የሉም። የኤጀንሲ ሰራተኞች በGoogle Workspace አካውንቶች ይገባሉ።
- Roles: እያንዳንዱ ተጠቃሚ ሚና አለው —
clientወይምstaff። - Authorization ህጎች፦
| እርምጃ | ደንበኛ | ሰራተኛ |
|---|---|---|
| የራሳቸው ኩባንያ ፕሮጀክቶችን ማየት | አዎ | አዎ |
| የሌሎች ኩባንያዎች ፕሮጀክቶችን ማየት | አይ | አዎ |
| ፋይል ወደ ፕሮጀክት መጫን | የራሳቸው ፕሮጀክቶች ብቻ | አዎ |
| ደረሰኝ እንደተከፈለ ማድረግ | አይ | አዎ |
- የሚተገበርበት ቦታ፦ በሰርቨሩ ላይ፣ ለእያንዳንዱ ጥያቄ። ሰርቨሩ የገባውን ተጠቃሚ ይፈልጋል፤ ከዚያም
project.company_idከተጠቃሚው ኩባንያ ጋር የሚዛመድባቸውን ፕሮጀክቶች ብቻ ይመልሳል። «Mark paid» ቁልፍን መደበቅ በቂ አይደለም — endpointው ራሱ ውድቅ ማድረግ አለበት።
የተለመዱ ቃላት ማብራሪያ
| ቃል | ትርጉም |
|---|---|
| Authentication (AuthN) | ማን እንደሆነ ማረጋገጥ። |
| Authorization (AuthZ) | ምን ማድረግ እንደሚፈቀድለት መወሰን። |
| Session | መተግበሪያው በጥያቄዎች መካከል እንደገቡ ማስታወስ። |
| Cookie | ብራውዘሩ በእያንዳንዱ ጥያቄ ወደ ድረ-ገጹ የሚመልሰው ትንሽ የመረጃ ቁራጭ። |
| JWT | JSON Web Token፦ እንደ user ID እና የማለፊያ ጊዜ ያሉ መረጃዎችን የሚይዝ የተፈረመ፣ የታመቀ token። |
| Role / permission | መዳረሻን የሚወስኑ እንደ admin ወይም member ያሉ ስያሜዎች። |
| MFA / 2FA | ከ authenticator መተግበሪያ ኮድ እንደ ሁለተኛ ማረጋገጫ መጠየቅ። |
| SSO | Single sign-on፦ ለብዙ መተግበሪያዎች አንድ login (ብዙ ጊዜ የኩባንያ አካውንት)። |
| 401 vs 403 | «አንተ ማን ነህ?» (ያልተረጋገጠ) ከ«ይህን ማድረግ አትችልም» (ያልተፈቀደ)። |
የተለመዱ ስህተቶችና የተሳሳቱ ግንዛቤዎች
- ፈቃዶችን በገጹ ላይ ብቻ መፈተሽ። ብራውዘሩ ቁልፍ ቢደብቅ ግን API ካልፈተሸ ማንም ሰው API ን በቀጥታ መጥራት ይችላል።
- ከURL የሚመጡ IDs ማመን።
/invoices/1042ደረሰኝ 1042 የገባው ተጠቃሚ መሆኑን መፈተሽ አለበት። - የራስ crypto መፍጠር። በታወቁ libraries ወይም አቅራቢዎች ይጠቀሙ፤ AI የራሱን hashing ዘዴ እንዲፈጥር አይፍቀዱ።
- ደካማ የይለፍ ቃል ዳግም ማስጀመር። ዳግም ማስጀመሪያ ሊንኮች አንድ ጊዜ ብቻ መሥራት፣ በፍጥነት ማለፍና የኢሜል አካውንት መኖሩን መግለጽ የለባቸውም።
- የእርስዎን login ከገንቢው መሣሪያ login ጋር ማደባለቅ። የመተግበሪያዎ ተጠቃሚዎች ከምትገነቡበት መሣሪያ አካውንትዎ የተለዩ ናቸው።
- በlogin ላይ rate limit አለመኖር። ያለ እሱ አጥቂዎች የይለፍ ቃሎችን ያለገደብ ሊሞክሩ ይችላሉ።
ለAI መገንቢያዎ ምን ብለው ይጠይቁ
- «[የታወቀ library ወይም አቅራቢ] በመጠቀም ምዝገባና login ጨምር። የራስህ የይለፍ ቃል hashing አትጻፍ።»
- «የይለፍ ቃሎችን በbcrypt ወይም Argon2 hash አድርገህ አስቀምጥ።»
- «ለsession HttpOnly፣ Secure cookies ተጠቀም።»
- «ሚናዎችን ጨምር፦ admin እና member። ለእያንዳንዱ endpoint ምን ሚናዎች ሊጠሩት እንደሚችሉ ዘርዝር።»
- «ተጠቃሚዎች የራሳቸውን መዝገቦች ብቻ እንዲያነቡና እንዲያስተካክሉ በሰርቨሩ ላይ አስገድድ። ከዚያ እንዴት እንደፈተሽከው አሳየኝ።»
- «የይለፍ ቃል ዳግም ማስጀመርን በአንድ ጊዜ ብቻ በሚሠሩና በአንድ ሰዓት በሚያልቁ ሊንኮች ጨምር።»
- «የlogin ሙከራዎችን ገድብ።»
ከዚያ ራስዎ ይሞክሩት፦ ሁለት አካውንት ይፍጠሩ እና ከአንዱ ገብተው የሌላኛውን ዳታ ለመድረስ ይሞክሩ። login መጨመር መመሪያችን እና የደህንነት ዝርዝር ተጨማሪ ይገልጻሉ።
Authentication በMythex
Mythex ለመተግበሪያዎ ተጠቃሚዎች አብሮ የተሰራ auth ምርት አይሰጥም፤ አቀራረብ ይመርጣሉ — በፕሮጀክትዎ ዳታቤዝ ውስጥ የተቀመጠ ኢሜልና የይለፍ ቃል፣ ወይም የተስተናገደ አቅራቢ SDK — እና agent እንዲጨምረው ይጠይቃሉ። የአቅራቢ ቁልፎች በፕሮጀክት ሚስጥሮች ውስጥ ይገባሉ፤ በቻት ውስጥ አይደለም። ይህ ራሱ ወደ Mythex ለመግባትዎ ከሚጠቀሙበት የተለየ ነው። የሰነዶቹ ዝግጁ ጥያቄ መተግበሪያ ላይ login መጨመር ለማስተካከል የሚቻል የመጀመሪያ prompt አለው፤ እነዚያ ሰርቨር-ጎን ፈተናዎች የት እንደሚኖሩ ደግሞ API ምንድን ነው ያብራራል።
ጥያቄዎች
በAuthentication እና Authorization መካከል ያለው ልዩነት ምንድን ነው?
Authentication ማን እንደሆኑ ይፈትሻል፤ ለምሳሌ የይለፍ ቃልዎን በማረጋገጥ። Authorization ከታወቁ በኋላ ምን ማድረግ እንደሚፈቀድልዎ ይወስናል፤ ለምሳሌ የአስተዳዳሪ ገጽ ማየት ወይም የሌላ ሰውን ቦታ ማስያዣ ማስተካከል። መተግበሪያዎች ሁለቱንም ያስፈልጋቸዋል።
OAuth ምንድን ነው?
OAuth 2.0 መተግበሪያ የይለፍ ቃልዎን ሳያይ በሌላ አገልግሎት ላይ ባለዎት አካውንት ውስጥ የተወሰነ መዳረሻ እንዲያገኝ የሚፈቅድ ደረጃ ነው። «በGoogle ይግቡ» የOpenID Connect ይጠቀማል፤ ይህ በOAuth 2.0 ላይ የተገነባ የማንነት ንብርብር ነው፤ በዚህም መተግበሪያው ማን እንደሆኑ ከGoogle ይማራል።
መተግበሪያዬ የይለፍ ቃሎችን ማስቀመጥ አለበት?
በሚነበብ ቅርጽ በፍጹም አይደለም። የኢሜልና የይለፍ ቃል login ከተጠቀሙ፣ የይለፍ ቃሎች ጨው (salt) በተጨመረባቸው hashes መቀመጥ አለባቸው፤ ለይለፍ ቃሎች በተዘጋጀ ቀርፋፋ ስልተ ቀመር፣ ለምሳሌ Argon2 ወይም bcrypt። ብዙ መተግበሪያዎች የተስተናገደ የauth አቅራቢ፣ ማኅበራዊ login ወይም የኢሜል magic links በመጠቀም ጉዳዩን ያስወግዳሉ።
መተግበሪያዬ sessions ወይስ tokens መጠቀም አለበት?
ሁለቱም ይሠራሉ። Session የlogin ሁኔታን በሰርቨር ላይ ያስቀምጣል እና ብራውዘሩ በcookie ውስጥ የዘፈቀደ ID ይሰጣል፤ ይህም ለመሰረዝ ቀላል ነው። እንደ JWT ያለ token በራሱ የተፈረመ መረጃ ይይዛል፤ ለAPIs እና ለሞባይል ደንበኞች ይስማማል፣ ነገር ግን ከማለቁ በፊት ለመሰረዝ ከባድ ነው። ለተለመደ የድር መተግበሪያ በcookie ላይ የተመሰረተ session ጥሩ ነባሪ ነው።