Juhendid

Mis on autentimine? Sisselogimine, sessioonid ja OAuth

Autentimine on see, kuidas rakendus kinnitab, kes kasutaja on – tavaliselt kontrollides midagi, mida kasutaja teab (parooli), midagi, mis tal on (koodi, mis saadeti telefonile või e-posti aadressile), või identiteeti teisest usaldusväärsest teenusest (näiteks „Logi sisse Google'iga”). Kui kasutaja on autentitud, mäletab rakendus teda sessiooni või žetooni abil, nii et ta ei peaks igal lehel uuesti sisse logima. Otsus, mida see tuntud kasutaja tohib teha, on eraldi samm, mida nimetatakse volituste kontrolliks (authorization).

Miks see AI-ga ehitamisel oluline on

Sisselogimise lisamine on üks levinumaid päringuid, mida inimesed AI ehitajale esitavad, ja üks lihtsamaid asju valesti teha. Sisselogimisvormi on lihtne genereerida. Raske osa on kõik selle ümber:

  • Kas paroole hoitakse turvaliselt?
  • Kas iga privaatne leht ja iga API lõpp-punkt tegelikult kontrollib, kes päringu teeb?
  • Kas sisselogitud klient näeb teise kliendi andmeid, muutes URL-is numbrit?
  • Mis juhtub, kui keegi unustab parooli?

Rakendus võib välja näha täiesti turvaline ja ebaõnnestuda kõigis neis punktides. Kui mõistad, mis osad on liikuvad, oskad esitada õigeid küsimusi ja õigeid asju testida.

Igapäevane võrdlus

Mõtle hotelli sisseregistreerimisele.

Vastuvõtulauas näitad isikut tõendavat dokumenti. See on autentimine: tõestad, kes oled. Retseptsionist annab sulle kaardi. See kaart on sinu sessioon: kogu viibimise ajal ei pea sa dokumenti uuesti näitama, vaid puudutad kaarti.

Kaart avab su toa, spordisaali ja su korruse lifti – aga mitte teiste külaliste tube ega personaliruumi. See on volituste kontroll: mida sinu isik tohib kasutada. Kui kaotad kaardi, saab hotell selle vastuvõtus deaktiveerida (sessiooni tühistamine). Väljaregistreerimisel see lakkab töötamast (väljalogimine või aegumine).

„Logi sisse Google'iga” on nagu hotell, mis aktsepteerib usaldusväärse partneri kirja, mis ütleb „see on see isik”, selle asemel et kontrollida su dokumenti ise.

Peamised sisselogimismeetodid

MeetodKuidas töötabPlussidMiinused
E-post + paroolKasutaja valib parooli; rakendus salvestab selle räsiTuttav, välist sõltuvust polePead räsisid turvaliselt hoidma ja lähtestamist käsitlema
Ühekordne link / koodRakendus saadab e-kirjaga lingi või koodi, mis logib kasutaja sissePole paroole, mida lekitada ega unustadaSõltub e-kirja kohaletoimetamisest; sisselogimine on aeglasem
Sotsiaalne sisselogimine (OAuth / OpenID Connect)Kasutaja logib sisse Google'i, Apple'i, GitHubi vms kontogaKasutajatele kiire; sina ei salvesta parooliSeadistus igas pakkujas; kasutajad ilma nende kontodeta
Hostitud autentimisteenusTeenus nagu Clerk, Auth0 või Supabase Auth käsitleb registreerimist, sisselogimist ja lähtestamistVähem turvatööd sinu poolelIgakuine kulu suuremas mahus; veel üks sõltuvus
Mitmefaktoriline autentimine (MFA / 2FA)Teise kontrolli esimese järel, näiteks autentimisrakenduse koodPalju raskem sisse murdaNatuke rohkem takistusi

Kuidas paroole tuleks salvestada

Turvaline rakendus ei salvesta kunagi sinu tegelikku parooli. Selle asemel salvestab ta räsi: ühesuunalise funktsiooni väljundi, mis muudab parooli kindlapikkuseks stringiks. Sisselogimisel räsib rakendus sisestatud väärtuse ja võrdleb tulemust salvestatud räsiga.

Kaks detaili teevad selle turvaliseks:

  • Sool – juhuslik väärtus, mis lisatakse igale paroolile enne räsimist, nii et kaks inimest sama parooliga saavad erinevad räsid ning eelarvutatud otsingutabelid on kasutud.
  • Paroolidele mõeldud aeglane algoritm – näiteks Argon2, bcrypt või scrypt. Üldotstarbelised räsid nagu MD5 või SHA-256 on üksi liiga kiired; ründajad saaksid miljardeid arvamisi proovida.

Räsimine ei ole sama mis krüpteerimine. Krüpteeritud andmeid saab võtmega dekrüpteerida; paroolirääsi on mõeldud üldse mitte tagasi pööratavaks.

Sessioonid vs žetoonid

Pärast sisselogimist peab rakendus sind iga päringu puhul ära tundma. On kaks levinud lähenemist.

Sessioon (küpsis)Žeton (nt JWT)
Mida brauser hoiabJuhuslik sessiooni ID küpsisesAllkirjastatud žeton, mis sisaldab kasutajainfot ja aegumist
Kus sisselogimise olek elabServeris, andmebaasis või hoidlasŽetoonis endas
Kasutaja väljalogimine kõikjaltLihtne: kustuta sessioon serverisRaskem: žeton kehtib kuni aegumiseni, välja arvatud juhul, kui hoiad musta nimekirja
Tüüpiline kasutusTraditsioonilised veebirakendusedAPI-d, mobiilirakendused, teenused, mis omavahel suhtlevad

Küpsiste puhul on kolm seadet olulised: HttpOnly (lehel olev JavaScript ei saa küpsist lugeda), Secure (saadetakse ainult HTTPS-i kaudu) ja SameSite (piirab saatmist päringutele teistelt saitidelt). Žetoonide hoidmine brauseri localStorage'is on tavaline, kuid see avab need igale lehel töötavale skriptile.

OAuth ja „Logi sisse Google'iga”

OAuth 2.0 on standard delegeeritud volituste jaoks: see laseb rakendusel saada piiratud juurdepääsu sinu kontole teises teenuses – näiteks lugeda sinu Google'i kalendrit – ilma et ta kunagi näeks sinu Google'i parooli. Sind suunatakse Google'isse, kinnitad konkreetsed õigused (mida nimetatakse scope'ideks) ning Google annab rakendusele žetooni ainult nende õiguste jaoks.

OAuth ise oli loodud juurdepääsu andmiseks, mitte selleks, et öelda, kes sa oled. OpenID Connect (OIDC) on OAuth 2.0 peale ehitatud kiht, mis lisab identiteedi – seda kasutab „Logi sisse Google'iga” või „Logi sisse Apple'iga”. Seadistamiseks registreerid oma rakenduse pakkujas ja saad kliendi ID ning kliendi saladuse; saladus jääb sinu serverisse.

Näide: sisselogimine kliendiportaali

Oletame, et ehitad portaali, kus disainiagentuuri kliendid näevad oma projekte ja arveid.

  • Autentimine: kliendid logivad sisse e-posti ja ühekordse lingiga, nii et paroole pole vaja hallata. Agentuuri töötajad logivad sisse Google Workspace'i kontodega.
  • Rollid: igal kasutajal on roll – client või staff.
  • Volituste reeglid:
ToimingKlientTöötaja
Näha oma ettevõtte projekteJahJah
Näha teiste ettevõtete projekteEiJah
Laadida projekti fail ülesAinult oma projektidJah
Märkida arve tasutuksEiJah
  • Kus seda jõustatakse: serveris, iga päringu puhul. Server leiab sisselogitud kasutaja ja tagastab ainult need projektid, kus project.company_id vastab kasutaja ettevõttele. Nupu „Märgi tasutuks” peitmine ei piisa – lõpp-punkt peab ise keelduma.

Levinud mõisted selgitatult

MõisteTähendus
Autentimine (AuthN)Kellegi isiku kinnitamine.
Volituste kontroll (AuthZ)Otsustamine, mida tal on lubatud teha.
SessioonRakenduse mäletamine, et oled sisse logitud, päringute vahel.
KüpsisVäike andmetükk, mille brauser saadab saidile tagasi igal päringul.
JWTJSON Web Token: allkirjastatud kompaktne žeton, mis kannab väiteid, näiteks kasutaja ID ja aegumist.
Roll / õigusSildid nagu admin või member, mis otsustavad juurdepääsu.
MFA / 2FATeise tõendi nõudmine, näiteks kood autentimisrakendusest.
SSOÜhekordne sisselogimine: üks sisselogimine (sageli ettevõtte konto) paljudesse rakendustesse.
401 vs 403„Kes sa oled?” (pole autentitud) vs „Seda sa ei tohi teha” (pole volitatud).

Levinud vead ja väärarusaamad

  • Õiguste kontrollimine ainult lehel. Kui brauser peidab nupu, aga API ei kontrolli, saab keegi API-t otse kutsuda.
  • URL-ist tulevate ID-de usaldamine. /invoices/1042 peab kontrollima, et arve 1042 kuulub sisselogitud kasutajale.
  • Oma krüptograafia kirjutamine. Kasuta tuntud teeke või pakkujaid; ära lase AI-l välja mõelda räsimisskeemi.
  • Nõrk parooli lähtestamine. Lähtestuslingid peaksid olema ühekordsed, kiiresti aeguvad ega tohi paljastada, kas e-posti aadressiga on konto.
  • Oma sisselogimise segamine ehitaja omaga. Su rakenduse kasutajad on eraldi sinu kontost tööriistas, millega ehitad.
  • Sisselogimise piiramata katsed. Ilma määrata kiirusepiiranguta võivad ründajad parooli lõputult proovida.

Mida küsida oma AI ehitajalt

  • „Lisa registreerimine ja sisselogimine, kasutades [tuntud teeki või pakkujat]. Ära kirjuta oma paroolide räsimist.”
  • „Salvesta paroolid räsitult, kasutades bcrypt'i või Argon2.”
  • „Kasuta sessiooniküpsiste jaoks HttpOnly ja Secure küpsiseid.”
  • „Lisa rollid: admin ja member. Loetle iga lõpp-punkt ja see, milliseid rolle see lubab kutsuda.”
  • „Jõusta serveris, et kasutajad saavad lugeda ja muuta ainult oma kirjeid. Seejärel näita, kuidas kontrollisid.”
  • „Lisa parooli lähtestamine ühekordsete linkidega, mis aeguvad tunni pärast.”
  • „Piira sisselogimiskatseid kiiruspiiranguga.”

Seejärel testi ise: loo kaks kontot ja proovi ühe kasutaja andmetele ligi pääseda, olles sisse logitud teisena. Juhend sisselogimise lisamiseks ja turvakontrollnimekiri lähevad kaugemale.

Autentimine Mythexis

Mythex ei paku sinu rakenduse kasutajatele sisseehitatud autentimistoodet; valid lähenemise – e-posti ja parooli projekti andmebaasis või hostitud pakkuja SDK – ning palud agendil selle lisada. Pakkuja võtmed lähevad projekti saladustesse, mitte vestlusse. See on eraldi sellest, kuidas ise Mythexisse sisse logid. Dokumentatsiooni retsept rakenduse sisselogimise lisamine sisaldab algusprompti, mida saad kohandada, ja mis on API selgitab, kus need serveripoolsed kontrollid elavad.

Küsimused

Mis vahe on autentimisel ja volituste kontrollil?

Autentimine kontrollib, kes sa oled, näiteks kinnitades sinu parooli. Volituste kontroll otsustab, mida sul on lubatud teha, kui sind on tuntud – näiteks kas sa võid näha administraatori lehte või muuta kellegi teist broneeringut. Rakendused vajavad mõlemat.

Mis on OAuth?

OAuth 2.0 on standard, mis laseb rakendusel saada piiratud juurdepääsu sinu kontole teises teenuses ilma sinu parooli nägemata. „Logi sisse Google'iga” kasutab OpenID Connecti, identiteedikihti OAuth 2.0 peal, nii et rakendus saab Google'ilt teada, kes sa oled.

Kas minu rakendus peaks paroole salvestama?

Mitte kunagi loetaval kujul. Kui kasutad e-posti ja parooliga sisselogimist, tuleb paroolid salvestada soolatud räsidena, mis on tehtud paroolide jaoks mõeldud aeglase algoritmiga, näiteks Argon2 või bcrypt. Paljud rakendused väldivad seda probleemi, kasutades hostitud autentimisteenust, sotsiaalset sisselogimist või e-kirjas olevaid ühekordseid linke.

Sessioonid või žetoonid – mida minu rakendus peaks kasutama?

Mõlemad töötavad. Sessioon hoiab sisselogimise olekut serveris ja annab brauserile küpsises juhusliku ID-i, mida on lihtne tühistada. Žeton, näiteks JWT, kannab allkirjastatud infot ise, mis sobib API-de ja mobiiliklientide jaoks, kuid seda on raskem enne aegumist tühistada. Tüüpilise veebirakenduse jaoks on küpsisepõhised sessioonid mõistlik vaikeseade.

Mythex · Pricing · Ehita kõike AI-ga · Veebilehtede ja rakenduste mallid · Mythex võrdluses · Tehisintellektiga rakenduste ehitamise sõnastik · Tasuta tööriistad tehisintellektiga rakenduste ehitamiseks · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) فارسی 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 简体中文 繁體中文(香港) 繁體中文(台灣)