Útmutatók

Mi a hitelesítés? Bejelentkezés, munkamenetek és OAuth magyarázattal

A hitelesítés az, ahogy egy app megerősíti, ki a felhasználó – általában valamit ellenőriz, amit ő tud (jelszót), vagy amije van (telefonra vagy e-mailbe küldött kódot), vagy egy másik megbízható szolgáltatótól származó identitást (például a „Bejelentkezés Google-lel” funkciót). Miután a felhasználó hitelesítve lett, az app munkamenettel vagy tokennel emlékszik rá, hogy ne kelljen minden oldalon újra bejelentkeznie. Az, hogy a megismert felhasználó mit tehet, külön lépés, amelyet jogosultságkezelésnek (authorization) hívnak.

Miért fontos, ha AI-val építesz

A bejelentkezés hozzáadása az egyik leggyakoribb kérés egy AI-építőnél, és az egyik legkönnyebben finoman elrontható dolog. Egy bejelentkező oldalt könnyű legenerálni. A nehéz rész mindaz, ami körülötte van:

  • Biztonságosan vannak-e tárolva a jelszavak?
  • Minden privát oldal és minden API-végpont ellenőrzi-e valóban, ki kéri?
  • Láthat-e egy bejelentkezett vásárló más vásárló adatait azzal, hogy átírja a számot az URL-ben?
  • Mi történik, ha valaki elfelejti a jelszavát?

Egy app kívülről tökéletesen biztonságosnak tűnhet, miközben mindegyik ponton elbukik. A működő részek megértése segít abban, hogy a megfelelő kérdéseket tedd fel és a megfelelő dolgokat teszteld.

Mindennapi hasonlat

Gondolj arra, amikor szállodába jelentkezel be.

A recepción felmutatod az igazolványodat. Ez a hitelesítés: bizonyítod, ki vagy. A recepciós ezután kulcskártyát ad. Ez a kártya a munkameneted: a tartózkodásod hátralévő részében nem kell újra igazolványt mutatnod, csak a kártyát érintened.

A kártya kinyitja a szobádat, az edzőtermet és a liftet a szintedre – de nem a többi vendég szobáját vagy az irodát. Ez a jogosultságkezelés: hogy az azonosságod mihez férhet hozzá. Ha elveszíted a kártyát, a szálloda a pultnál deaktiválhatja (ez a munkamenet visszavonása). Kijelentkezéskor vagy lejáratkor megszűnik a működése.

A „Bejelentkezés Google-lel” olyan, mintha a szálloda egy megbízható partnertől kapott levélre hagyatkozna, amely szerint „ez az illető”, ahelyett, hogy maga ellenőrizné az igazolványodat.

A fő bejelentkezési módszerek

MódszerHogyan működikElőnyökHátrányok
E-mail + jelszóA felhasználó jelszót választ; az app ennek hash-ét tároljaIsmerős, nincs külső függőségA hash-eket biztonságosan kell tárolni, és kezelni kell a visszaállítást
Mágikus link / egyszer használatos kódAz app e-mailben küld egy linket vagy kódot, amely bejelentkezteti a felhasználótNincs jelszó, amit ellophatnak vagy elfelejthetnekFügg az e-mail-kézbesítéstől; lassabb a bejelentkezés
Közösségi bejelentkezés (OAuth / OpenID Connect)A felhasználó Google-lel, Apple-lel, GitHub-bal stb. jelentkezik beGyors a felhasználóknak; te nem tárolsz jelszótMinden szolgáltatónál be kell állítani; nincs meg mindenkinek az adott fiókja
Hosztolt hitelesítési szolgáltatóOlyan szolgáltatás, mint a Clerk, az Auth0 vagy a Supabase Auth, kezeli a regisztrációt, a bejelentkezést és a visszaállítástKevesebb biztonsági munka nekedNagyobb méretnél havi díj; újabb függőség
Többfaktoros (MFA / 2FA)Az első után egy második ellenőrzés, például hitelesítő-appból kapott kódSokkal nehezebb feltörniKicsit több lépés

Hogyan kell tárolni a jelszavakat

Egy biztonságos app soha nem tárolja a tényleges jelszavadat. Helyette egy hash-t tárol: egy visszafordíthatatlan függvény kimenetét, amely a jelszót fix hosszúságú sztringgé alakítja. Bejelentkezéskor az app hash-eli, amit beírtál, és összehasonlítja az eredményt a tárolt hash-sel.

Két részlet teszi ezt biztonságossá:

  • Só (salt) – egy véletlenszerű érték, amelyet minden jelszóhoz hozzáadnak a hash-elés előtt, így két ember azonos jelszava is különböző hash-t ad, és az előre kiszámolt keresőtáblák haszontalanok.
  • Lassú, jelszavakhoz készült algoritmus – például Argon2, bcrypt vagy scrypt. Az általános célú hash-ek, mint az MD5 vagy a SHA-256, önmagukban túl gyorsak; a támadók milliárdnyi tippet próbálhatnak ki.

A hash-elés nem ugyanaz, mint a titkosítás. A titkosított adat kulccsal visszafejthető; a jelszó-hash úgy készült, hogy egyáltalán ne legyen visszafordítható.

Munkamenetek vs tokenek

Bejelentkezés után az appnak minden kérésnél fel kell ismernie téged. Két gyakori megközelítés van.

Munkamenet (süti)Token (pl. JWT)
Mit tart a böngészőEgy véletlenszerű munkamenet-azonosítót sütibenAláírt tokent, amely felhasználói adatot és lejárati időt tartalmaz
Hol él a bejelentkezési állapotA szerveren, adatbázisban vagy tárolóbanMagában a tokenben
Kijelentkeztetés mindenhonnanKönnyű: a szerveren töröljük a munkamenetetNehezebb: a token addig érvényes, amíg le nem jár, hacsak nem vezetsz tiltólistát
Tipikus használatHagyományos webappokAPI-k, mobilappok, egymással beszélgető szolgáltatások

Sütiknél három beállítás számít: HttpOnly (az oldalon futó JavaScript nem olvashatja a sütit), Secure (csak HTTPS-en küldődik) és SameSite (korlátozza a küldést más oldalakról érkező kérésekben). A tokenek böngészős localStorage-ban való tárolása gyakori, de így bármely, az oldalon futó szkript hozzáfér.

OAuth és a „Bejelentkezés Google-lel”

Az OAuth 2.0 delegált jogosultságkezelés szabványa: lehetővé teszi, hogy egy app korlátozott hozzáférést kapjon a fiókodhoz egy másik szolgáltatásnál – mondjuk a Google-naptáradat olvasásához –, anélkül hogy valaha látná a Google-jelszavadat. A Google-hoz irányítanak, te jóváhagyod a konkrét engedélyeket (ezeket scope-oknak hívják), a Google pedig csak ezekre az engedélyekre szóló tokent ad az appnak.

Az OAuth önmagában arra készült, hogy hozzáférést adjon, nem arra, hogy megmondja, ki vagy. Az OpenID Connect (OIDC) az OAuth 2.0 fölé épülő réteg, amely identitást ad hozzá – ezt használja a „Bejelentkezés Google-lel” vagy az „Bejelentkezés Apple-lel”. A beállításhoz regisztrálod az appodat a szolgáltatónál, és kapsz egy kliensazonosítót (client ID) és egy kliens titkot (client secret); a titok a szerveren marad.

Példa: bejelentkezés egy ügyfélportálhoz

Tegyük fel, hogy egy tervezőirodának portált építesz, ahol az ügyfelek látják a projektjeiket és számláikat.

  • Hitelesítés: az ügyfelek e-mailben és mágikus linkkel jelentkeznek be, így nincs kezelendő jelszó. Az iroda munkatársai Google Workspace-fiókokkal jelentkeznek be.
  • Szerepkörök: minden felhasználónak van egy szerepköre – client vagy staff.
  • Jogosultsági szabályok:
MűveletÜgyfélMunkatárs
Saját cégük projektjeinek megtekintéseIgenIgen
Más cégek projektjeinek megtekintéseNemIgen
Fájl feltöltése egy projekthezCsak a saját projektekhezIgen
Számla megjelölése fizetettkéntNemIgen
  • Hol érvényesül: a szerveren, minden kérésnél. A szerver megkeresi a bejelentkezett felhasználót, majd csak azokat a projekteket adja vissza, ahol a project.company_id egyezik a felhasználó cégével. Nem elég elrejteni a „Fizetettnek jelöl” gombot – a végpontnak magának kell megtagadnia.

Gyakori fogalmak magyarázata

FogalomJelentés
Hitelesítés (AuthN)Annak megerősítése, ki valaki.
Jogosultságkezelés (AuthZ)Annak eldöntése, mit tehet.
MunkamenetAz app emlékezése arra, hogy be vagy jelentkezve, a kérések között.
SütiEgy kis adatdarab, amelyet a böngésző minden kéréssel visszaküld az oldalnak.
JWTJSON Web Token: aláírt, tömör token, amely olyan állításokat hordoz, mint a felhasználói azonosító és a lejárat.
Szerepkör / jogosultságOlyan címkék, mint az admin vagy a member, amelyek eldöntik a hozzáférést.
MFA / 2FAMásodik igazolás megkövetelése, például hitelesítő-appból érkező kód.
SSOEgyszeri bejelentkezés: egy belépés (gyakran céges fiókkal) sok appba.
401 vs 403„Ki vagy?” (nincs hitelesítve) vs „Ezt nem teheted” (nincs jogosultságod).

Gyakori hibák és tévhitek

  • Jogosultság ellenőrzése csak az oldalon. Ha a böngésző elrejt egy gombot, de az API nem ellenőriz, bárki közvetlenül hívhatja az API-t.
  • Az URL-ben szereplő azonosítókban bízni. A /invoices/1042 esetén ellenőrizni kell, hogy az 1042-es számla a bejelentkezett felhasználóé.
  • Saját kriptográfia írása. Jól ismert könyvtárakat vagy szolgáltatókat használj; ne engedd, hogy az AI kitaláljon egy hash-sémát.
  • Gyenge jelszó-visszaállítás. A visszaállító linkek legyenek egyszer használhatók, gyorsan járjanak le, és ne áruljanak el, van-e fiók az e-mail-címhez.
  • Összekeverni a saját bejelentkezésed az építőeszközével. Az app felhasználói különállnak a fiókodtól az eszközön, amellyel építed.
  • Nincs korlátozás a bejelentkezési próbálkozásokra. Enélkül a támadók végtelenül próbálkozhatnak jelszavakkal.

Mit kérj az AI-építőtől

  • „Adj regisztrációt és bejelentkezést [egy jól ismert könyvtárral vagy szolgáltatóval]. Ne írj egyedi jelszó-hash-elést.”
  • „A jelszavakat bcrypt vagy Argon2 segítségével hash-eld és tárold.”
  • „A munkamenethez HttpOnly, Secure sütiket használj.”
  • „Adj szerepköröket: admin és member. Sorold fel minden végpontot, és hogy melyik szerepkör hívhatja.”
  • „A szerveren érvényesítsd, hogy a felhasználók csak a saját rekordjaikat láthassák és szerkeszthessék. Utána mutasd meg, hogyan ellenőrizted.”
  • „Adj jelszó-visszaállítást egyszer használható linkekkel, amelyek egy óra múlva lejárnak.”
  • „Korlátozd a bejelentkezési próbálkozások számát.”

Utána teszteld magad: hozz létre két fiókot, és próbáld meg az egyik bejelentkezve elérni a másik adatait. A bejelentkezés hozzáadásáról szóló útmutató és a biztonsági ellenőrzőlista tovább visz.

Hitelesítés a Mythexben

A Mythex nem ad beépített hitelesítési terméket az appod felhasználóinak; te választasz egy megközelítést – e-mail és jelszó az appod projektadatbázisában tárolva (adatbázis), vagy egy hosztolt szolgáltató SDK-ja –, és megkéred az ügynököt, hogy adja hozzá. A szolgáltatói kulcsok projekt-titkokba kerülnek, nem a chatbe. Ez különbözik attól, ahogy magába a Mythexbe jelentkezel be. A dokumentációs recept a bejelentkezés hozzáadásáról az appodhoz egy átalakítható kezdő promptot tartalmaz, a mi az API pedig elmagyarázza, hol élnek ezek a szerveroldali ellenőrzések.

Kérdések

Mi a különbség a hitelesítés és a jogosultságkezelés között?

A hitelesítés azt ellenőrzi, ki vagy, például a jelszavad megerősítésével. A jogosultságkezelés azt dönti el, mit tehetsz, miután ismert vagy, például hogy láthatod-e az adminisztrációs oldalt, vagy szerkesztheted-e valaki más foglalását. Az appoknak mindkettőre szükségük van.

Mi az OAuth?

Az OAuth 2.0 egy szabvány, amely lehetővé teszi, hogy egy app korlátozott hozzáférést kapjon a fiókodhoz egy másik szolgáltatásnál anélkül, hogy látná a jelszavadat. A „Bejelentkezés Google-lel” az OpenID Connectet használja, egy identitási réteget, amely az OAuth 2.0-ra épül, így az app a Google-től tudja meg, ki vagy.

Tárolnia kell az appomnak jelszavakat?

Soha olvasható formában. Ha e-mailes és jelszavas bejelentkezést használsz, a jelszavakat sózott hash-ként kell tárolni, jelszavakhoz tervezett lassú algoritmussal, például Argon2-vel vagy bcrypt-tel. Sok app elkerüli a problémát hosztolt hitelesítési szolgáltatóval, közösségi bejelentkezéssel vagy e-mailes egyszer használatos linkekkel.

Munkamenetet vagy tokent használjon az appom?

Mindkettő működik. A munkamenet a bejelentkezési állapotot a szerveren tárolja, a böngészőnek pedig egy véletlenszerű azonosítót ad sütiben, amelyet könnyű visszavonni. A token, például a JWT, aláírt információt hordoz magában, ez API-khoz és mobilkliensekhez illik, de lejárat előtt nehezebb visszavonni. Egy tipikus webappnál a sütin alapuló munkamenet jó alapértelmezés.

Mythex · Pricing · Építs bármit AI-val · Weboldal- és alkalmazássablonok · A Mythex összehasonlítva · AI-alapú alkalmazásépítési szószedet · Ingyenes eszközök AI-alapú alkalmazásépítéshez · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Հայերեն 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 简体中文 繁體中文(香港) 繁體中文(台灣)