Leiðbeiningar

Hvað er auðkenning? Innskráningar, setur og OAuth útskýrt

Auðkenning er hvernig forrit staðfestir hver notandinn er, yfirleitt með því að athuga eitthvað sem þú veist (lykilorð), eitthvað sem þú átt (kóða sem er sendur í símann eða tölvupóstinn) eða auðkenni frá annarri traustri þjónustu (eins og „Skrá inn með Google“). Þegar notandi hefur verið auðkenndur man forritið eftir honum með setu eða tákni svo hann þurfi ekki að skrá sig inn á hverri síðu. Að ákveða hvað þessi þekkti notandi má gera er annað skref, sem kallast heimildir (authorization).

Af hverju þetta skiptir máli þegar þú byggir með gervigreind

Að bæta við innskráningu er ein algengasta beiðnin til gervigreindarsmiða og ein auðveldasta leiðin til að gera hana lúmskt rangt. Innskráningarsíðu er einfalt að búa til. Erfiði hlutinn er allt í kringum hana:

  • Eru lykilorð geymd á öruggan hátt?
  • Athugar sérhver einkasíða og sérhver API-endapunktur hver er að spyrja?
  • Getur innskráður viðskiptavinur séð gögn annars viðskiptavinar með því að breyta tölu í slóðinni?
  • Hvað gerist þegar einhver gleymir lykilorðinu sínu?

Forrit geta litið fullkomlega örugg út en fallið á öllum þessum atriðum. Ef þú skilur hreyfanlegu hlutana geturðu spurt réttu spurninganna og prófað réttu hlutina.

Dæmisaga úr daglegu lífi

Hugsaðu um innritun á hóteli.

Við afgreiðsluborðið sýnirðu skilríki. Það er auðkenning: að sanna hver þú ert. Móttökustarfsmaðurinn réttir þér síðan lykilkort. Kortið er setan þín: það sem eftir er dvalarinnar þarftu ekki að sýna skilríki aftur, þú strýkur kortinu.

Kortið opnar herbergið þitt, líkamsræktina og lyftuna upp á þína hæð, en ekki herbergi annarra gesta eða skrifstofu starfsfólksins. Það er heimildir: hvað auðkenni þitt mátt nálgast. Ef þú týnir kortinu getur hótelið gert það óvirkt við borðið (að afturkalla setu). Þegar þú útskráir þig hættir það að virka (útskráning eða gildistímalok).

„Skrá inn með Google“ er eins og þegar hótel tekur við bréfi frá traustum samstarfsaðila sem segir „þetta er hver hann er“, í stað þess að athuga skilríkin þín sjálft.

Helstu innskráningaraðferðir

AðferðHvernig hún virkarKostirGallar
Netfang + lykilorðNotandinn velur lykilorð; forritið geymir keyju af þvíKunnuglegt, engin ytri háðÞú verður að geyma keyjur á öruggan hátt og sjá um endurstillingu
Töfrahlekkur / einskiptiskóðiForritið sendir hlekk eða kóða í tölvupósti sem skráir notandann innEngin lykilorð sem leka eða gleymastHáð afhendingu tölvupósts; hægari innskráning
Félagsinnskráning (OAuth / OpenID Connect)Notandi skráir sig inn með Google, Apple, GitHub o.fl.Hratt fyrir notendur; þú geymir ekkert lykilorðUppsetning hjá hverjum veitanda; notendur sem eiga ekki þá reikninga
Hýst auðkenningarþjónustaÞjónusta eins og Clerk, Auth0 eða Supabase Auth sér um nýskráningu, innskráningu og endurstillinguMinni öryggisvinna fyrir þigMánaðarkostnaður við stærð; önnur háð
Fjölþætt auðkenning (MFA / 2FA)Önnur athugun eftir fyrstu, til dæmis kóði úr auðkenningarappiMiklu erfiðara að brjótast innDálítið meiri fyrirhöfn

Hvernig lykilorð ættu að vera geymd

Öruggt forrit geymir aldrei raunverulega lykilorðið þitt. Í staðinn geymir það keyju (hash): niðurstöðu einstefnufalls sem breytir lykilorðinu í fastlengdar streng. Þegar þú skráir þig inn keyrir forritið það sem þú slóst inn í gegnum fallið og ber saman við geymdu keyjuna.

Tvö atriði gera þetta öruggt:

  • Salt: slembið gildi sem er bætt við hvert lykilorð áður en keyjan er búin til, svo tveir með sama lykilorð fái mismunandi keyjur og forreiknaðar uppflettitöflur nýtast ekki.
  • Hægur reiknirit sem er hannaður fyrir lykilorð, eins og Argon2, bcrypt eða scrypt. Almennar keyjur eins og MD5 eða SHA-256 eru of hraðar einar sér; árásarmenn geta prófað milljarða ágiskana.

Keyjun er ekki það sama og dulkóðun. Dulkóðuð gögn er hægt að afkóða með lykli; lykilorðskeyja er hönnuð þannig að hana er alls ekki hægt að snúa við.

Setur og tákn

Eftir innskráningu þarf forritið að þekkja þig í hverri beiðni. Það eru tvær algengar aðferðir.

Seta (smáka)Tákn (t.d. JWT)
Það sem vafrinn geymirHandahófskennt setuauðkenni í smákökuUndirritað tákn með notandaupplýsingum og gildistíma
Hvar innskráningarstaðan erÁ þjóninum, í gagnagrunni eða geymsluInni í tákninu sjálfu
Að skrá einhvern út alls staðarAuðvelt: eyða setunni á þjóninumErfiðara: táknið gildir þar til það rennur út nema þú haldir svartan lista
Algeng notkunHefðbundin vefforritAPI, farsímaforrit, þjónustur sem tala saman

Fyrir smákökur skipta þrjár stillingar máli: HttpOnly (JavaScript á síðunni getur ekki lesið smákökuna), Secure (hún er aðeins send yfir HTTPS) og SameSite (takmarkar sendingu hennar í beiðnum frá öðrum síðum). Að geyma tákn í localStorage vafrans er algengt en setur þau í hættu fyrir hvaða skriftu sem keyrir á síðunni.

OAuth og „Skrá inn með Google“

OAuth 2.0 er staðall fyrir framseldar heimildir (delegated authorization): hann gerir forriti kleift að fá takmarkaðan aðgang að reikningnum þínum hjá annarri þjónustu, til dæmis að lesa Google-dagatalið þitt, án þess að sjá Google-lykilorðið þitt nokkurn tíma. Þú ert sendur til Google, samþykkir tiltekin leyfi (kölluð scopes), og Google gefur forritinu tákn sem gildir aðeins fyrir þau leyfi.

OAuth eitt og sér var hannað til að veita aðgang, ekki til að segja hver þú ert. OpenID Connect (OIDC) er lag ofan á OAuth 2.0 sem bætir við auðkenni, og það er það sem „Skrá inn með Google“ eða „Skrá inn með Apple“ notar. Til að setja þetta upp skráirðu forritið þitt hjá veitandanum og færð client ID og client secret; leyndarlykillinn er áfram á þjóninum þínum.

Vinnudæmi: innskráning fyrir viðskiptavinagátt

Segjum að þú sért að smíða gátt þar sem viðskiptavinir hönnunarstofu sjá verkefni sín og reikninga.

  • Auðkenning: viðskiptavinir skrá sig inn með netfangi og töfrahlekk, svo engin lykilorð þarf að sjá um. Starfsfólk stofunnar skráir sig inn með Google Workspace reikningum.
  • Hlutverk: hver notandi hefur hlutverk, client eða staff.
  • Reglur um heimildir:
AðgerðViðskiptavinurStarfsfólk
Sjá verkefni eigin fyrirtækisJáJá
Sjá verkefni annarra fyrirtækjaNeiJá
Hlaða upp skrá í verkefniAðeins eigin verkefniJá
Merkja reikning sem greiddanNeiJá
  • Hvar þetta er framfylgt: á þjóninum, í sérhverri beiðni. Þjónninn flettir upp innskráða notandanum og skilar aðeins verkefnum þar sem project.company_id passar við fyrirtæki notandans. Það er ekki nóg að fela hnappinn „Merkja greitt“. Endapunkturinn sjálfur verður að hafna beiðninni.

Algeng hugtök útskýrð

HugtakMerking
Auðkenning (AuthN)Að staðfesta hver einhver er.
Heimildir (AuthZ)Að ákveða hvað viðkomandi má gera.
Seta (session)Að forritið man að þú ert innskráð(ur) milli beiðna.
Smáka (cookie)Lítill gagnabiti sem vafrinn sendir aftur á síðuna með hverri beiðni.
JWTJSON Web Token: undirritað, þétt tákn sem ber fullyrðingar eins og notandakenni og gildistíma.
Hlutverk / leyfi (role / permission)Merkimiðar eins og admin eða member sem ákveða aðgang.
MFA / 2FAKrafa um aðra sönnun, til dæmis kóða úr auðkenningarappi.
SSOEinskráning (single sign-on): ein innskráning, oft fyrirtækjareikningur, fyrir mörg öpp.
401 vs 403„Hver ert þú?“ (ekki auðkenndur) vs „Þú mátt ekki gera það“ (ekki heimilt).

Algeng mistök og misskilningar

  • Að athuga heimildir aðeins á síðunni. Ef vafrinn felur hnapp en API-ið athugar ekki, getur hver sem er kallað á API-ið beint.
  • Að treysta auðkennum úr slóðinni. /invoices/1042 verður að athuga að reikningur 1042 tilheyri innskráða notandanum.
  • Að smíða eigin dulmál. Notaðu þekkt söfn eða veitendur; láttu gervigreindina ekki finna upp eigið keyjukerfi.
  • Veik endurstilling lykilorðs. Endurstillingarhlekkir eiga að vera einnota, renna út fljótt og ekki gefa til kynna hvort netfang sé með reikning.
  • Að rugla saman innskráningu þinni og smiðsins. Notendur appsins þíns eru aðskildir frá reikningnum þínum hjá verkfærinu sem þú byggir með.
  • Engin hraðatakmörkun á innskráningu. Án hennar geta árásarmenn prófað lykilorð endalaust.

Hvað á að biðja gervigreindarsmiðinn þinn um

  • „Bættu við nýskráningu og innskráningu með [þekktu safni eða veitanda]. Ekki skrifa eigin keyjun lykilorða.“
  • „Geymdu lykilorð keyjuð með bcrypt eða Argon2.“
  • „Notaðu HttpOnly og Secure smákökur fyrir setuna.“
  • „Bættu við hlutverkum: admin og member. Listaðu hvern endapunkt og hvaða hlutverk mega kalla á hann.“
  • „Framfylgdu á þjóninum að notendur geti aðeins lesið og breytt eigin gögnum. Sýndu mér svo hvernig þú athugaðir það.“
  • „Bættu við endurstillingu lykilorðs með einnota hlekkjum sem renna út eftir klukkustund.“
  • „Settu hraðatakmörk á innskráningartilraunir.“

Prófaðu síðan sjálf(ur): búðu til tvo reikninga og reyndu að ná í gögn annars þeirra þegar þú ert innskráð(ur) sem hinn. Leiðbeiningar um að bæta innskráningu við appið og öryggisgátlistinn fara lengra.

Auðkenning í Mythex

Mythex býður ekki upp á innbyggða auðkenningarvöru fyrir notendur appsins þíns. Þú velur nálgun, annað hvort netfang og lykilorð geymt í gagnagrunni verkefnisins eða SDK frá hýstum veitanda, og biður fulltrúann um að bæta henni við. Lyklar veitandans fara í leyndarmál verkefnisins, ekki í spjallið. Þetta er aðskilið frá því hvernig þú skráir þig inn í Mythex sjálft. Uppskriftin í skjölunum um að bæta innskráningu við appið er með upphafsfyrirmæli sem þú getur aðlagað, og hvað er API útskýrir hvar þessar athuganir á þjóninum búa.

Spurningar

Hver er munurinn á auðkenningu (authentication) og heimildum (authorization)?

Auðkenning athugar hver þú ert, til dæmis með því að staðfesta lykilorðið þitt. Heimildir ákvarða hvað þú mátt gera þegar vitað er hver þú ert, til dæmis hvort þú sjáir stjórnandasíðuna eða breytir bókun einhvers annars. Forrit þurfa bæði.

Hvað er OAuth?

OAuth 2.0 er staðall sem gerir forriti kleift að fá takmarkaðan aðgang að reikningnum þínum hjá annarri þjónustu án þess að sjá lykilorðið þitt. „Skrá inn með Google“ notar OpenID Connect, auðkenningarlag ofan á OAuth 2.0, svo forritið fær að vita hver þú ert frá Google.

Á forritið mitt að geyma lykilorð?

Aldrei í læsilegri mynd. Ef þú notar innskráningu með netfangi og lykilorði verða lykilorðin að vera geymd sem saltaðar keyjur (salted hashes) búnar til með hægum reiknirit sem er hannaður fyrir lykilorð, eins og Argon2 eða bcrypt. Mörg forrit komast hjá vandanum með því að nota hýsta auðkenningarþjónustu, félagsinnskráningu eða töfrahlekki í tölvupósti.

Setur eða tákn, hvort á forritið mitt að nota?

Hvort tveggja virkar. Seta geymir innskráningarstöðuna á þjóninum og gefur vafranum handahófskennt auðkenni í smáköku (cookie), sem er auðvelt að afturkalla. Tákn eins og JWT geymir undirritaðar upplýsingar í sjálfu sér, sem hentar API-um og farsímaforritum, en er erfiðara að afturkalla áður en það rennur út. Fyrir dæmigert vefforrit eru setur með smákökum góður grunnur.

Mythex · Pricing · Smíðaðu hvað sem er með gervigreind · Sniðmát fyrir vefsíður og forrit · Mythex í samanburði · Orðasafn um forritasmíði með gervigreind · Ókeypis verkfæri fyrir forritasmíði með gervigreind · 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 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 简体中文 繁體中文(香港) 繁體中文(台灣)