Authentication гэж юу вэ? Нэвтрэлт, session, OAuth-ийг тайлбарлая
Authentication бол апп хэрэглэгч хэн болохыг баталгаажуулах арга юм — ихэвчлэн тэдний мэдэх зүйлийг (нууц үг), тэдний эзэмшдэг зүйлийг (утас эсвэл имэйлд илгээсэн код) эсвэл найдвартай өөр үйлчилгээний identity-г (жишээлбэл «Google-ээр нэвтрэх») шалгах замаар. Хэрэглэгчийг баталгаажуулсны дараа апп түүнийг session эсвэл token-оор санаж, хуудас бүрт дахин нэвтрүүлэхгүй байлгадаг. Танигдсан хэрэглэгч юу хийхийг зөвшөөрөхөө шийдэх нь authorization гэж нэрлэгддэг тусдаа алхам юм.
AI-аар бүтээхэд яагаад чухал вэ
Нэвтрэлт нэмэх нь хүмүүс AI builder-оосоо хамгийн түгээмэл хүсдэг хүсэлтүүдийн нэг бөгөөд нарийн алдаа гаргахад хамгийн амархан нэг юм. Нэвтрэх хуудсыг үүсгэх нь энгийн. Хүнд хэцүү нь түүний эргэн тойрон дахь бүх зүйл юм:
- Нууц үгийг аюулгүйгээр хадгалж байна уу?
- Хувийн хуудас болон API endpoint бүр хэн асууж байгааг үнэхээр шалгадаг уу?
- Нэвтэрсэн харилцагч URL дахь тоог солиод өөр харилцагчийн өгөгдлийг харж чадах уу?
- Хэн нэгэн нууц үгээ мартвал юу болох вэ?
Апп эдгээр бүгдэд унаж байсан ч гадна талаас маш найдвартай харагдаж болно. Хөдөлгөгч хэсгүүдийг ойлгох нь зөв асуултуудыг асууж, зөв зүйлийг туршихад тусална.
Өдөр тутмын жишээ
Зочид буудалд бүртгүүлэхийг бодоорой.
Каунтер дээр та иргэний үнэмлэхээ харуулна. Энэ бол authentication: та хэн болохоо баталж байна. Ресепшн таанд карт түлхүүр өгнө. Тэр карт бол таны session: буудалд байх хугацаандаа та дахин үнэмлэхээ харуулахгүй, зөвхөн картаа дарна.
Карт нь таны өрөө, спортын зал, танай давхарт гарах лифтийг нээдэг — гэвч бусад зочдын өрөө эсвэл ажилтны өрөөг нээхгүй. Энэ бол authorization: таны identity юунд хандах эрхтэйг шийддэг. Карт алдвал буудал тэр картыг ресепшн дээрээс идэвхгүй болгож чадна (session-ийг хүчингүй болгох). Гарах үед карт ажиллахаа болино (гарах эсвэл хугацаа дуусах).
«Google-ээр нэвтрэх» нь буудал таны үнэмлэхийг өөрөө шалгахын оронд, найдвартай түншдэлтэй хамтрагчаас «Энэ бол тэд» гэсэн захидлыг хүлээн авахтай адил юм.
Нэвтрэх үндсэн аргууд
| Арга | Хэрхэн ажилладаг | Давуу тал | Сул тал |
|---|---|---|---|
| Имэйл + нууц үг | Хэрэглэгч нууц үг сонгож, апп түүний hash-ийг хадгална | Танил, гадны хамаарал байхгүй | Hash-ийг аюулгүйгээр хадгалж, сэргээлтийг зохицуулах ёстой |
| Magic link / нэг удаагийн код | Апп имэйлээр холбоос эсвэл код илгээж, хэрэглэгчийг нэвтрүүлнэ | Алдах эсвэл мартах нууц үг байхгүй | Имэйлийн хүргэлтээс хамаарна; нэвтрэлт удаан |
| Нийгмийн сүлжээгээр нэвтрэх (OAuth / OpenID Connect) | Хэрэглэгч Google, Apple, GitHub гэх мэтээр нэвтэрнэ | Хэрэглэгчдэд хурдан; та нууц үг хадгалахгүй | Provider бүрт тохиргоо хийх; тэдгээр бүртгэлгүй хэрэглэгчид |
| Хостлогдсон auth provider | Clerk, Auth0 эсвэл Supabase Auth зэрэг үйлчилгээ бүртгүүлэх, нэвтрэх, сэргээхийг хариуцна | Танд аюулгүй байдлын ажил цөөн | Том хэмжээнд сарын зардал; өөр нэг dependency |
| Олон хүчин зүйлтэй (MFA / 2FA) | Эхний алхмын дараа хоёр дахь шалгалт, жишээлбэл authenticator аппын код | Эвдэхэд илүү хэцүү | Бага зэрэг нэмэлт алхам |
Нууц үгийг яаж хадгалах ёстой вэ
Аюулгүй апп таны жинхэнэ нууц үгийг хэзээ ч хадгалдаггүй. Харин hash хадгалдаг: нууц үгийг тогтмол мөр болгон хөрвүүлдэг нэг чиглэлтэй функцийн гаралт. Та нэвтрэх үед апп таны бичсэн зүйлийг hash хийж, үр дүнг хадгалагдсан hash-тэй харьцуулна.
Энийг аюулгүй болгох хоёр зүйл:
- Salt — hash хийхээс өмнө нууц үг бүрт нэмэх санамсаргүй утга, тиймээс ижил нууц үгтэй хоёр хүн өөр hash авна, мөн урьдчилан тооцоолсон хайлтын хүснэгт ашиггүй болно.
- Нууц үгэнд зориулсан удаан алгоритм — жишээлбэл Argon2, bcrypt эсвэл scrypt. MD5 эсвэл SHA-256 зэрэг ерөнхий зориулалтын hash өөрөө хэт хурдан; халдагчид тэрбум удаа таах боломжтой.
Hash нь encryption-тай адил биш. Шифрлэгдсэн өгөгдлийг түлхүүрээр тайлж болно; нууц үгийн hash нь огт буцааж эргүүлэхгүйгээр зохиогдсон.
Session болон token
Нэвтэрсний дараа апп хүсэлт бүрт таныг танихын тулд хоёр түгээмэл арга байдаг.
| Session (cookie) | Token (жишээ нь JWT) | |
|---|---|---|
| Браузер юуг хадгалдаг вэ | Cookie дотор санамсаргүй session ID | Хэрэглэгчийн мэдээлэл болон хугацаа агуулсан гарын үсэгтэй token |
| Нэвтрэлтийн төлөв хаана байдаг вэ | Серверт, өгөгдлийн сан эсвэл хадгалах газар | Token-ийн дотор |
| Хүн бүрийг бүх газраас гаргах | Хялбар: серверээс session-ийг устгана | Хэцүү: хар жагсаалт хөтлөхгүй бол token хугацаа дуустал хүчинтэй хэвээр |
| Ердийн хэрэглээ | Уламжлалт вэб апп | API, мобайл апп, хоорондоо харилцдаг үйлчилгээнүүд |
Cookie-ийн хувьд гурван тохиргоо чухал: HttpOnly (хуудасны JavaScript cookie-г уншиж чадахгүй), Secure (зөвхөн HTTPS-ээр илгээгдэнэ) болон SameSite (бусад сайтаас хийсэн хүсэлтэд илгээхийг хязгаарлана). Token-ийг браузерийн localStorage-д хадгалах нь түгээмэл боловч хуудсан дээр ажиллах аливаа script-д ил болгодог.
OAuth болон «Google-ээр нэвтрэх»
OAuth 2.0 бол delegated authorization-ийн стандарт: апп нь таны нууц үгийг огт харалгүйгээр нөгөө үйлчилгээн дэх бүртгэлдээ хязгаарлагдмал хандалт авах боломжтой болгодог — жишээлбэл таны Google Calendar-ийг унших. Таныг Google руу явуулж, тодорхой зөвшөөрлүүдийг (scope гэж нэрлэгддэг) зөвшөөрөхөд Google тэр зөвшөөрлүүдэд зөвхөн зориулсан token өгнө.
OAuth өөрөө хандалт олгохоор зохиогдсон, таныг хэн болохыг хэлэхээр биш. OpenID Connect (OIDC) бол OAuth 2.0 дээр нэмэгдсэн identity давхарга бөгөөд «Google-ээр нэвтрэх» эсвэл «Apple-ээр нэвтрэх» нь үүнийг ашигладаг. Үүнийг тохируулахын тулд та аппаа provider дээр бүртгүүлж client ID болон client secret авдаг; secret нь таны серверт үлдэнэ.
Жишээ: харилцагчийн портал дээр нэвтрэлт
Та дизайн агентлагийн харилцагчид өөрсдийн төсөл, нэхэмжлэхээ харах портал бүтээж байна гэж бодъё.
- Authentication: харилцагчид имэйл болон magic link-ээр нэвтэрнэ, тиймээс удирдах нууц үг байхгүй. Агентлагийн ажилтнууд Google Workspace бүртгэлээрээ нэвтэрнэ.
- Роль: хэрэглэгч бүр роль авдаг —
clientэсвэлstaff. - Authorization дүрэм:
| Үйлдэл | Харилцагч | Ажилтан |
|---|---|---|
| Өөрийн компанийн төслүүдийг харах | Тийм | Тийм |
| Бусад компаниудын төслүүдийг харах | Үгүй | Тийм |
| Төсөлд файл хуулах | Зөвхөн өөрийн төслүүд | Тийм |
| Нэхэмжлэхийг төлсөн гэж тэмдэглэх | Үгүй | Тийм |
- Хаана хэрэгждэг вэ: серверт, хүсэлт бүрт. Сервер нэвтэрсэн хэрэглэгчийг хайж, зөвхөн
project.company_idнь хэрэглэгчийн компанитай таарч буй төслүүдийг буцаадаг. «Төлсөн» товчийг нуух нь хангалтгүй — endpoint өөрөө татгалзах ёстой.
Нэр томьёоны тайлбар
| Нэр томьёо | Утга |
|---|---|
| Authentication (AuthN) | Хэн болохыг баталгаажуулах. |
| Authorization (AuthZ) | Юу хийхийг зөвшөөрөхийг шийдэх. |
| Session | Хүсэлтүүдийн хооронд апп таныг нэвтэрсэн гэж санаж байх. |
| Cookie | Браузер хүсэлт бүрт сайтад буцааж илгээдэг жижиг өгөгдөл. |
| JWT | JSON Web Token: хэрэглэгчийн ID, хугацаа зэрэг нотолгоо агуулсан гарын үсэгтэй, жижиг token. |
| Роль / зөвшөөрөл | Хандалтыг шийддэг admin эсвэл member зэрэг шошгууд. |
| MFA / 2FA | Хоёр дахь баталгаа шаардах, жишээлбэл authenticator аппын код. |
| SSO | Single sign-on: олон аппд нэг нэвтрэлт (ихэвчлэн компанийн бүртгэл). |
| 401 vs 403 | «Та хэн бэ?» (баталгаажаагүй) гэх «Та ийм зүйл хийж чадахгүй» (зөвшөөрөлгүй). |
Түгээмэл алдаа ба буруу ойлголтууд
- Зөвшөөрлийг зөвхөн хуудсан дээр шалгах. Браузер товчийг нуух боловч API шалгахгүй бол хэн ч API-г шууд дуудаж чадна.
- URL-ийн ID-д итгэх.
/invoices/1042нь нэвтэрсэн хэрэглэгчийн нэхэмжлэх 1042 мөн эсэхийг шалгах ёстой. - Өөрийн crypto бичих. Мэдэгдсэн сангууд эсвэл provider ашигла; AI-д hash схем зохиохыг бүү зөвшөөр.
- Сул нууц үг сэргээлт. Сэргээх холбоос нэг удаагийн байх, хурдан дуусах, имэйлд бүртгэл байгаа эсэхийг бүү илрүүл.
- Таны нэвтрэлтийг builder-ийнхтэй андуурах. Таны аппын хэрэглэгчид таны бүтээж буй хэрэгсэл дээрх бүртгэлээс тусдаа.
- Нэвтрэлтэд rate limit байхгүй. Үүнгүйгээр халдагчид нууц үгээ хязгааргүй таах боломжтой.
AI builder-оосоо юу хүсэх вэ
- «[Мэдэгдсэн сан эсвэл provider]-ийг ашиглан бүртгүүлэх, нэвтрэх нэм. Өөрийн нууц үгийн hash бүү бич.»
- «Нууц үгээ bcrypt эсвэл Argon2-оор hash хийж хадгал.»
- «Session-д HttpOnly, Secure cookie ашигла.»
- «Роль нэм: admin болон member. Endpoint бүрийг мөн аль рольд дуудаж болохыг жагсаа.»
- «Хэрэглэгч зөвхөн өөрийн бичлэгийг унших, засах боломжтойг серверт баталгаажуул. Дараа нь хэрхэн шалгасанаа харуул.»
- «Нууц үг сэргээлтийг нэг цагийн дотор дуусах нэг удаагийн холбоосоор нэм.»
- «Нэвтрэх оролдлогыг rate limit хий.»
Дараа нь өөрөө туршаарай: хоёр бүртгэл үүсгэж, нэг нь нэвтэрсэн үедээ нөгөөгийнх өгөгдөлд хүрч үзээрэй. Нэвтрэлт нэмэх гарын авлага болон аюулгүй байдлын шалгах хуудас нь илүү дэлгэрэнгүй мэдээлэл өгнө.
Authentication Mythex дээр
Mythex нь таны аппын хэрэглэгчдэд зориулсан бэлэн auth бүтээгдэхүүн өгдөггүй; та арга сонгоно — төслийнхөө өгөгдлийн сан дотор хадгалсан имэйл, нууц үг, эсвэл хостлогдсон provider-ийн SDK — мөн агентаас нэмэхийг хүснэ. Provider-ийн key-ийг төслийн secret-д хадгална, чатад бүү бич. Энэ нь Mythex-д өөрөө нэвтрэхээс тусдаа. Docs-ийн аппдаа нэвтрэлт нэмэх жорд тохируулж болох эхлэх prompt байгаа бөгөөд API гэж юу вэ гэдэг нь серверийн тал дээрх шалгалтууд хаана байдгийг тайлбарлана.
Асуултууд
Authentication болон authorization-ий ялгаа юу вэ?
Authentication нь таныг хэн болохыг шалгана, жишээлбэл нууц үгийг чинь баталгаажуулах замаар. Authorization нь таныг танигдсаны дараа юу хийхийг зөвшөөрөхийг шийднэ, жишээлбэл админ хуудсыг харах эсвэл хэн нэгний захиалгыг засах эрхтэй эсэх. Аппд хоёулаа хэрэгтэй.
OAuth гэж юу вэ?
OAuth 2.0 бол аппыг нууц үгээ харуулалгүйгээр нөгөө үйлчилгээн дэх таны бүртгэлд хязгаарлагдмал хандалт авах боломж олгодог стандарт юм. «Google-ээр нэвтрэх» нь OAuth 2.0 дээр суурилсан OpenID Connect-ийг ашигладаг бөгөөд апп нь таныг Google-ээс мэддэг болдог.
Аппаас нууц үгийг хадгалах ёстой юу?
Уншигдахуйц хэлбэрээр хэзээ ч биш. Хэрэв та имэйл, нууц үгээр нэвтрэлт ашиглавал нууц үгийг нууцлагдсан hash хэлбэрээр хадгалах ёстой, нууц үгэнд зориулсан удаан алгоритмаар, жишээлбэл Argon2 эсвэл bcrypt-ээр. Олон апп хостлогдсон auth provider, нийгмийн сүлжээгээр нэвтрэх эсвэл имэйлээр илгээх нэг удаагийн холбоосыг ашиглан энэ асуудлаас зайлсхийдэг.
Session эсвэл token — миний апп аль нь ашиглах вэ?
Аль аль нь ажилладаг. Session нь нэвтрэлтийн төлөвийг серверт хадгалж, браузерт cookie дотор санамсаргүй ID өгдөг бөгөөд үүнийг хүчингүй болгоход хялбар. JWT зэрэг token нь гарын үсэгтэй мэдээллийг өөртөө агуулдаг бөгөөд API болон мобайл клиентэд тохиромжтой боловч хугацаа дуусахаас өмнө цуцлахад хэцүү. Ердийн вэб аппд cookie дээр суурилсан session бол найдвартай анхдагч сонголт.