Udhëzues

Çfarë është autentikimi? Login, sesionet dhe OAuth të shpjeguara

Autentikimi është mënyra si një aplikacion konfirmon kush është një përdorues — zakonisht duke kontrolluar diçka që ai e di (një fjalëkalim), diçka që ka (një kod të dërguar në telefon ose email) ose një identitet nga një shërbim tjetër i besuar (si „Hyr me Google“). Pasi një përdorues është autentikuar, aplikacioni e mban mend me një sesion ose token, që të mos duhet të hyjë përsëri në çdo faqe. Të vendosësh çfarë mund të bëjë ai përdorues i njohur është një hap tjetër, i quajtur autorizim.

Pse ka rëndësi kur ndërtoni me AI

Shtimi i hyrjes është një nga kërkesat më të shpeshta që u bëhen ndërtuesve me AI, dhe një nga më të lehtat për ta gabuar në mënyrë të padukshme. Një faqe hyrjeje është e thjeshtë për t'u gjeneruar. Pjesa e vështirë është gjithçka rreth saj:

  • A ruhen fjalëkalimet në mënyrë të sigurt?
  • A kontrollon çdo faqe private dhe çdo endpoint i API-t me të vërtetë kush po kërkon?
  • A mund të shohë një klient i kyçur të dhënat e një klienti tjetër duke ndryshuar një numër në URL?
  • Çfarë ndodh kur dikush harron fjalëkalimin?

Një aplikacion mund të duket plotësisht i sigurt dhe ende të dështojë në secilën nga këto. Të kuptuarit e pjesëve lëvizëse ju lejon të bëni pyetjet e duhura dhe të testoni gjërat e duhura.

Një analogji e përditshme

Mendoni për regjistrimin në një hotel.

Në recepsion tregoni dokumentin tuaj. Kjo është autentikimi: të provoni kush jeni. Recepsionisti pastaj ju jep një kartelë çelësi. Ajo kartelë është sesioni juaj: për gjithë qëndrimin nuk tregoni më dokument; e prekni kartelën.

Kartela hap dhomën tuaj, palestrën dhe ashensorin për katin tuaj — por jo dhomat e mysafirëve të tjerë apo zyrën e stafit. Kjo është autorizimi: çfarë qasjeje lejon identiteti juaj. Nëse e humbni kartelën, hoteli mund ta çaktivizojë te recepsioni (revokimi i sesionit). Kur largoheni, ajo përfundon së funksionuari (dalja nga llogaria, ose skadimi).

„Hyr me Google“ është si një hotel që pranon një letër nga një partner i besuar që thotë „ky është kush është“, në vend që vetë të kontrollojë dokumentin tuaj.

Metodat kryesore të hyrjes

MetodaSi funksiononAvantazhetDisavantazhet
Email + fjalëkalimPërdoruesi zgjedh një fjalëkalim; aplikacioni ruan një hash të tijE njohur, pa varësi të jashtmeDuhet ruajtur hash-et në mënyrë të sigurt dhe trajtuar rivendosjet
Lidhje magjike / kod një herëAplikacioni dërgon me email një lidhje ose kod që e kyç përdoruesinNuk ka fjalëkalime për t'u rrjedhur ose harruarVaret nga dorëzimi i email-it; hyrja është më e ngadaltë
Hyrje sociale (OAuth / OpenID Connect)Përdoruesi hyn me Google, Apple, GitHub etj.E shpejtë për përdoruesit; ju nuk ruani fjalëkalimKonfigurim me çdo ofrues; përdorues pa ato llogari
Ofrues autentikimi i hostuarNjë shërbim si Clerk, Auth0 ose Supabase Auth trajton regjistrimin, hyrjen dhe rivendosjetMë pak punë sigurie për juKosto mujore në shkallë; një varësi tjetër
Shumë-faktorëshe (MFA / 2FA)Një kontroll i dytë pas të parit, si një kod nga aplikacioni autentikuesShumë më e vështirë për t'u thyerPak më shumë friksion

Si duhet të ruhen fjalëkalimet

Një aplikacion i sigurt nuk ruan kurrë fjalëkalimin tuaj aktual. Në vend të kësaj ruan një hash: rezultatin e një funksioni njëdrejtimësh që e shndërron fjalëkalimin në një varg fiks. Kur hyni, aplikacioni e hash-on atë që shkruat dhe e krahason rezultatin me hash-in e ruajtur.

Dy detaje e bëjnë këtë të sigurt:

  • Një kripë (salt) — një vlerë e rastësishme e shtuar te çdo fjalëkalim para hash-imit, kështu që dy persona me të njëjtin fjalëkalim marrin hash-e të ndryshme, dhe tabelat e para-llogaritura janë të padobishme.
  • Një algoritëm i ngadaltë i krijuar për fjalëkalime — si Argon2, bcrypt ose scrypt. Hash-et me qëllim të përgjithshëm si MD5 ose SHA-256 janë shumë të shpejta në vetvete; sulmuesit mund të provojnë miliarda hamendësime.

Hash-imi nuk është e njëjta gjë me enkriptimin. Të dhënat e enkriptuara mund të dekriptohen me një çelës; një hash fjalëkalimi është projektuar që të mos jetë fare i kthyeshëm.

Sesionet kundrejt tokenave

Pas hyrjes, aplikacioni duhet t'ju njohë në çdo kërkesë. Ka dy qasje të zakonshme.

Sesion (cookie)Token (p.sh. JWT)
Çfarë mban shfletuesiNjë ID sesioni të rastësishme në një cookieNjë token të nënshkruar që përmban informacion përdoruesi dhe një datë skadimi
Ku jeton gjendja e hyrjesNë server, në një bazë të dhënash ose depoBrenda vetë tokenit
Nxjerrja e dikujt nga llogaria kudoE lehtë: fshini sesionin në serverMë e vështirë: tokeni mbetet i vlefshëm deri në skadim, përveç nëse mbani një listë bllokimi
Përdorimi tipikAplikacione tradicionale webAPI-t, aplikacione mobile, shërbime që komunikojnë mes tyre

Për cookie-t, tre cilësime kanë rëndësi: HttpOnly (JavaScript në faqe nuk mund ta lexojë cookie-n), Secure (dërgohet vetëm përmes HTTPS) dhe SameSite (kufizon dërgimin e tij te kërkesat nga faqe të tjera). Ruajtja e tokenave në localStorage të shfletuesit është e zakonshme, por i ekspozon ata ndaj çdo skripte që ekzekutohet në faqe.

OAuth dhe „Hyr me Google“

OAuth 2.0 është një standard për autorizim të deleguar: lejon një aplikacion të marrë qasje të kufizuar te llogaria juaj në një shërbim tjetër — le të themi, të lexojë kalendarin tuaj të Google — pa e parë kurrë fjalëkalimin tuaj të Google. Ju dërgoheni te Google, miratoni leje specifike (quajtura scopes), dhe Google i jep aplikacionit një token vetëm për ato leje.

OAuth në vetvete u projektua për të dhënë qasje, jo për të thënë kush jeni. OpenID Connect (OIDC) është një shtresë mbi OAuth 2.0 që shton identitetin, dhe kjo është ajo që përdor „Hyr me Google“ ose „Hyr me Apple“. Për ta konfiguruar, regjistroni aplikacionin te ofruesi dhe merrni një client ID dhe një client secret; sekreti mbetet në serverin tuaj.

Një shembull i punuar: hyrja për një portal klientësh

Le të themi se po ndërtoni një portal ku klientët e një agjencie dizajni shohin projektet dhe faturat e tyre.

  • Autentikimi: klientët hyjnë me email dhe lidhje magjike, kështu që nuk ka fjalëkalime për t'u menaxhuar. Stafi i agjencisë hyn me llogari Google Workspace.
  • Rolet: çdo përdorues ka një rol — client ose staff.
  • Rregullat e autorizimit:
VeprimiKlientiStafi
Të shohë projektet e kompanisë së vetPoPo
Të shohë projektet e kompanive të tjeraJoPo
Të ngarkojë një skedar në një projektVetëm projektet e vetaPo
Të shënojë një faturë si të paguarJoPo
  • Ku zbatohet: në server, për çdo kërkesë. Serveri kërkon përdoruesin e kyçur, pastaj kthen vetëm projektet ku project.company_id përputhet me kompaninë e përdoruesit. Fshehja e butonit „Shëno të paguar“ nuk mjafton — vetë endpoint-i duhet të refuzojë.

Termat e zakonshëm të shpjeguar

TermiKuptimi
Autentikimi (AuthN)Konfirmimi se kush është dikush.
Autorizimi (AuthZ)Vendosja se çfarë lejohet të bëjë.
SesioniAplikacioni që mban mend se jeni kyçur, mes kërkesave.
CookieNjë copë e vogël të dhënash që shfletuesi ia dërgon sajtit çdo kërkesë.
JWTJSON Web Token: një token i nënshkruar, i shkurtër, që mbart pretendime si ID e përdoruesit dhe skadimi.
Rol / lejeEtiketa si admin ose member që vendosin qasjen.
MFA / 2FAKërkimi i një prove të dytë, si një kod nga aplikacioni autentikues.
SSOHyrje e vetme: një hyrje (shpesh llogari kompanie) për shumë aplikacione.
401 kundrejt 403„Kush je ti?“ (jo i autentikuar) kundrejt „Nuk mund ta bësh këtë“ (jo i autorizuar).

Gabime dhe keqkuptime të zakonshme

  • Kontrollimi i lejeve vetëm në faqe. Nëse shfletuesi fshih një buton por API-ja nuk kontrollon, çdokush mund ta thërrasë API-n drejtpërdrejt.
  • Besimi te ID-të nga URL-ja. /invoices/1042 duhet të kontrollojë që fatura 1042 i përket përdoruesit të kyçur.
  • Krijimi i kriptografisë vetë. Përdorni biblioteka ose ofrues të njohur; mos e lejoni AI-në të shpikë një skemë hash-imi.
  • Rivendosje e dobët fjalëkalimi. Lidhjet e rivendosjes duhet të përdoren vetëm një herë, të skadojnë shpejt dhe të mos zbulojnë nëse një email ka llogari.
  • Ngatërrimi i hyrjes tuaj me atë të ndërtuesit. Përdoruesit e aplikacionit tuaj janë të veçantë nga llogaria juaj te mjeti me të cilin ndërtoni.
  • Pa kufizim të shpejtësisë në hyrje. Pa të, sulmuesit mund të provojnë fjalëkalime pa fund.

Çfarë t'i kërkoni ndërtuesit tuaj me AI

  • „Shto regjistrim dhe hyrje duke përdorur [një bibliotekë ose ofrues të njohur]. Mos shkruaj hash-im fjalëkalimi vetë.“
  • „Ruaji fjalëkalimet e hash-uara me bcrypt ose Argon2.“
  • „Përdor cookie-t HttpOnly dhe Secure për sesionin.“
  • „Shto role: admin dhe member. Listo çdo endpoint dhe cilët role mund ta thërrasin.“
  • „Sigurohu në server që përdoruesit mund të lexojnë dhe ndryshojnë vetëm të dhënat e tyre. Pastaj më trego si e kontrolluat.“
  • „Shto rivendosje fjalëkalimi me lidhje që përdoren vetëm një herë dhe skadojnë pas një ore.“
  • „Kufizo shpejtësinë e tentativave të hyrjes.“

Pastaj testoni vetë: krijoni dy llogari dhe provoni të arrini të dhënat e njërës ndërsa jeni kyçur si tjetra. Udhëzuesi ynë për shtimin e hyrjes dhe lista e kontrollit të sigurisë shkojnë më tej.

Autentikimi në Mythex

Mythex nuk ofron një produkt të integruar autentikimi për përdoruesit e aplikacionit tuaj; ju zgjidhni një qasje — email dhe fjalëkalim të ruajtur në bazën e të dhënave të projektit tuaj, ose SDK-në e një ofruesi të hostuar — dhe i kërkoni agjentit ta shtojë. Çelësat e ofruesit vendosen te sekretet e projektit, jo në chat. Kjo është e ndarë nga mënyra si hyni vetë në Mythex. Recetë e dokumentacionit për shtimin e hyrjes te aplikacioni juaj ka një kërkesë fillestare që mund ta përshtatni, dhe çfarë është një API shpjegon ku jetojnë ato kontrolle në server.

Pyetje

Cili është ndryshimi mes autentikimit dhe autorizimit?

Autentikimi kontrollon kush jeni, për shembull duke verifikuar fjalëkalimin tuaj. Autorizimi vendos çfarë keni leje të bëni pasi të jeni njohur, si p.sh. nëse mund të hyni në faqen e administratorit ose të ndryshoni një rezervim të dikujt tjetër. Aplikacionet kanë nevojë për të dyja.

Çfarë është OAuth?

OAuth 2.0 është një standard që lejon një aplikacion të marrë qasje të kufizuar te llogaria juaj në një shërbim tjetër pa e parë fjalëkalimin tuaj. „Hyr me Google“ përdor OpenID Connect, një shtresë identiteti e ndërtuar mbi OAuth 2.0, kështu që aplikacioni mëson kush jeni nga Google.

A duhet ta ruajë aplikacioni im fjalëkalimet?

Asnjëherë në formë të lexueshme. Nëse përdorni hyrje me email dhe fjalëkalim, fjalëkalimet duhet të ruhen si hash-e me kripë (salt), të krijuara me një algoritëm të ngadaltë të projektuar për fjalëkalime, si Argon2 ose bcrypt. Shumë aplikacione e shmangin këtë problem duke përdorur një ofrues autentikimi të hostuar, hyrje sociale ose lidhje magjike me email.

Sesione apo tokena — cilin duhet të përdorë aplikacioni im?

Të dyja funksionojnë. Një sesion ruan gjendjen e hyrjes në server dhe i jep shfletuesit një ID të rastësishme në një cookie, e cila lehtë revokohet. Një token si JWT mban vetë informacion të nënshkruar, që i përshtatet API-ve dhe klientëve mobil, por është më e vështirë të anulohet përpara se të skadojë. Për një aplikacion web tipik, sesionet me cookie janë një parazgjedhje e arsyeshme.

Mythex · Pricing · Ndërtoni çdo gjë me AI · Shablone faqesh dhe aplikacionesh · Mythex në krahasim · Fjalori i ndërtimit të aplikacioneve me AI · Mjete falas për ndërtimin e aplikacioneve me 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 Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)