Bosh sahifa Wiki Authentication

Authentication

Authentication — foydalanuvchi yoki tizimning kimligini tekshirish jarayoni. Authentication orqali foydalanuvchi tizimga kirishda o‘zini tanitadi va tizim uning haqiqatan ham shu akkaunt egasi ekanini aniqlaydi.

Authentication ko‘pincha login, parol, token, session, SMS kod, email tasdiqlash, biometrik ma’lumot yoki tashqi xizmatlar orqali amalga oshiriladi.

Vazifasi

Authentication tizimga kirayotgan foydalanuvchining shaxsini aniqlash uchun ishlatiladi.

Authentication quyidagi vazifalarni bajaradi:

  • foydalanuvchini tizimga kiritish;
  • login va parolni tekshirish;
  • session yoki token yaratish;
  • foydalanuvchi holatini saqlash;
  • maxfiy sahifalarni himoyalash;
  • noto‘g‘ri kirish urinishlarini cheklash;
  • ikki bosqichli tasdiqlashni qo‘llash;
  • API so‘rovlarini foydalanuvchi bilan bog‘lash;
  • foydalanuvchi akkauntini aniqlash.

Masalan, foydalanuvchi email va parol kiritganda, tizim shu ma’lumotlar asosida uning kimligini tekshiradi.

Authentication qanday ishlaydi?

Authentication jarayonida foydalanuvchi o‘zini tanituvchi ma’lumot yuboradi. Backend bu ma’lumotni database yoki tashqi authentication service orqali tekshiradi.

Oddiy jarayon:

  • foydalanuvchi login formasini to‘ldiradi;
  • frontend ma’lumotni backend API’ga yuboradi;
  • backend foydalanuvchini database’dan topadi;
  • parol yoki boshqa tasdiqlovchi ma’lumot tekshiriladi;
  • ma’lumot to‘g‘ri bo‘lsa, session yoki token yaratiladi;
  • foydalanuvchi tizimga kirgan hisoblanadi;
  • keyingi so‘rovlarda session yoki token orqali foydalanuvchi aniqlanadi.

Authentication foydalanuvchi kimligini aniqlaydi, lekin u nimalarga ruxsatga ega ekanini authorization belgilaydi.

Login

Login — foydalanuvchining tizimga kirish jarayoni. Login odatda email, username, telefon raqami yoki boshqa identifikator orqali amalga oshiriladi.

Login formasida quyidagilar bo‘lishi mumkin:

Login muvaffaqiyatli bo‘lsa, tizim foydalanuvchini autentifikatsiyadan o‘tgan deb hisoblaydi.

Register

Register — foydalanuvchining tizimda yangi akkaunt yaratish jarayoni. Register jarayonida foydalanuvchi haqida dastlabki ma’lumotlar olinadi va database’da yangi yozuv yaratiladi.

Register formasida quyidagilar bo‘lishi mumkin:

  • ism;
  • email;
  • username;
  • telefon raqami;
  • parol;
  • parolni takrorlash;
  • email tasdiqlash;
  • foydalanish shartlariga rozilik.

Register jarayonidan keyin foydalanuvchi login qilishi yoki avtomatik tizimga kirishi mumkin.

Credential

Credential — foydalanuvchini tanitish uchun ishlatiladigan maxfiy yoki identifikatsion ma’lumotlar.

Credential turlari:

Authentication jarayoni credential ma’lumotlarini tekshirishga asoslanadi.

Password

Password — foydalanuvchi akkauntiga kirish uchun ishlatiladigan maxfiy matn. Parol authentication tizimlarida eng keng tarqalgan usullardan biridir.

Parol bilan bog‘liq jarayonlar:

  • parol yaratish;
  • parolni tekshirish;
  • parolni hash qilish;
  • parolni tiklash;
  • parolni almashtirish;
  • noto‘g‘ri parol urinishlarini cheklash.

Parol ochiq ko‘rinishda database’da saqlanmaydi, odatda hash ko‘rinishida saqlanadi.

Password hashing

Password hashing — parolni maxsus algoritm orqali qaytarib bo‘lmaydigan ko‘rinishga aylantirish jarayoni. Hash qilingan parol database’da saqlanadi.

Hashing jarayonida:

  • foydalanuvchi parol kiritadi;
  • backend parolni hash qiladi;
  • hash database’dagi hash bilan solishtiriladi;
  • mos kelsa, authentication muvaffaqiyatli bo‘ladi.

Password hashing uchun bcrypt, Argon2, PBKDF2 kabi algoritmlar ishlatiladi.

Salt

Salt — parol hash qilish jarayonida parolga qo‘shiladigan qo‘shimcha tasodifiy qiymat. Salt bir xil parollar uchun turli hashlar hosil bo‘lishiga yordam beradi.

Salt quyidagi maqsadlarda ishlatiladi:

  • bir xil parollar hashini farqlash;
  • rainbow table hujumlarini qiyinlashtirish;
  • parol hashlarini kuchliroq qilish;
  • har bir foydalanuvchi parolini alohida himoyalash.

Ko‘plab zamonaviy hashing algoritmlari salt qiymatini avtomatik boshqaradi.

Session

Session — foydalanuvchi tizimga kirgandan keyingi holatini server tomonda saqlash mexanizmi. Session orqali tizim foydalanuvchi keyingi so‘rovlarda ham login qilinganligini biladi.

Session jarayonida:

Session-based authentication klassik web ilovalarda ko‘p ishlatiladi.

Cookie — browserda saqlanadigan kichik ma’lumot bo‘lagi. Authentication jarayonida cookie session ID yoki token saqlash uchun ishlatilishi mumkin.

Cookie ichida quyidagilar bo‘lishi mumkin:

Cookie’lar serverga har bir mos so‘rov bilan avtomatik yuborilishi mumkin.

Token

Token — foydalanuvchi authenticationdan o‘tganini bildiradigan maxsus qiymat. Token backend tomonidan yaratiladi va keyingi so‘rovlarda foydalanuvchini aniqlash uchun ishlatiladi.

Token turlari:

API bilan ishlaydigan frontend va mobile ilovalarda token-based authentication keng ishlatiladi.

Access token

Access token — foydalanuvchining tizimga kirganini tasdiqlovchi va API so‘rovlarida ishlatiladigan token. Access token odatda qisqa muddatli bo‘ladi.

Access token quyidagi maqsadlarda ishlatiladi:

Masalan, frontend API so‘rov yuborganda Authorization: Bearer <token> headeridan foydalanishi mumkin.

Refresh token

Refresh token — access token muddati tugaganda yangi access token olish uchun ishlatiladigan token. Refresh token odatda access tokenga qaraganda uzoqroq muddat amal qiladi.

Refresh token jarayoni:

Refresh token authentication tizimida sessiyani davom ettirish uchun ishlatiladi.

JWT

JWTJSON Web Token, ya’ni JSON formatidagi token standarti. JWT token ichida foydalanuvchi haqida ma’lum claimlar bo‘lishi mumkin va token imzo orqali tekshiriladi.

JWT odatda uch qismdan iborat:

JWT ichida quyidagi ma’lumotlar bo‘lishi mumkin:

  • user ID;
  • role;
  • token muddati;
  • issuer;
  • audience;
  • qo‘shimcha claimlar.

JWT REST API va SPA ilovalarda authentication uchun ko‘p ishlatiladi.

Bearer token

Bearer tokenHTTP so‘rovda authentication uchun yuboriladigan token turi. U odatda Authorization headerida ishlatiladi.

Misol:

Authorization: Bearer eyJhbGciOi...

Bearer token orqali server tokenni tekshiradi va so‘rov qaysi foydalanuvchiga tegishli ekanini aniqlaydi.

Authorization header

Authorization headerHTTP so‘rovda foydalanuvchi yoki clientni autentifikatsiya qilish uchun ishlatiladigan header.

Authorization header turlari:

Masalan, API’ga so‘rov yuborishda token shu header orqali backendga uzatiladi.

Basic authentication

Basic authentication — username va parolni HTTP header orqali yuboradigan oddiy authentication usuli. Bu usulda ma’lumotlar base64 formatida kodlanadi.

Basic authentication quyidagi holatlarda uchraydi:

  • oddiy API himoyasi;
  • test muhitlari;
  • ichki servislar;
  • admin endpointlar;
  • tezkor himoya qatlamlari.

Basic authentication HTTPS bilan ishlatilganda xavfsizroq bo‘ladi, chunki oddiy base64 shifrlash hisoblanmaydi.

OAuth

OAuth — foydalanuvchining tashqi servis orqali tizimga kirishi yoki ruxsat berishini boshqaradigan protokol. OAuth yordamida foydalanuvchi Google, GitHub, Facebook yoki boshqa provider orqali login qilishi mumkin.

OAuth jarayonida:

  • foydalanuvchi tashqi providerga yo‘naltiriladi;
  • provider foydalanuvchini tasdiqlaydi;
  • ruxsat so‘raladi;
  • authorization code yoki token qaytariladi;
  • backend tokenni tekshiradi;
  • foydalanuvchi tizimga kiritiladi.

OAuth ko‘pincha “Google orqali kirish” yoki “GitHub orqali kirish” funksiyalarida ishlatiladi.

OpenID Connect

OpenID ConnectOAuth 2.0 ustida qurilgan authentication qatlami. U foydalanuvchi kimligini tasdiqlash uchun ishlatiladi.

OpenID Connect quyidagilarni beradi:

  • ID token;
  • foydalanuvchi profili;
  • provider orqali login;
  • identity verification;
  • standard authentication flow.

OpenID Connect Google, Microsoft, Auth0, Okta va boshqa identity providerlarda uchraydi.

Two-factor authentication

Two-factor authentication yoki 2FA — foydalanuvchi tizimga kirishda ikkita alohida tasdiqlash bosqichidan o‘tadigan authentication usuli.

2FA omillari:

Masalan, foydalanuvchi parol kiritgandan keyin telefoniga kelgan kodni ham kiritishi kerak bo‘lishi mumkin.

Multi-factor authentication

Multi-factor authentication yoki MFA — ikki yoki undan ko‘p authentication omillaridan foydalanadigan tizim.

Authentication omillari:

  • foydalanuvchi biladigan narsa: parol yoki PIN;
  • foydalanuvchi ega bo‘lgan narsa: telefon, token, hardware key;
  • foydalanuvchining o‘ziga xos belgisi: barmoq izi, yuz tanish.

MFA xavfsizlik darajasini oshirish uchun ishlatiladi.

OTP

OTP — bir martalik parol. OTP inglizcha One-Time Password so‘zlarining qisqartmasi bo‘lib, qisqa vaqt yoki bitta amal uchun ishlatiladigan kod hisoblanadi.

OTP quyidagi usullarda yuborilishi mumkin:

OTP login, parol tiklash, telefon tasdiqlash yoki muhim amalni tasdiqlashda ishlatiladi.

TOTP

TOTP — vaqtga asoslangan bir martalik parol. Authenticator ilovalarda ishlatiladigan 6 xonali kodlar ko‘pincha TOTP asosida ishlaydi.

TOTP xususiyatlari:

  • ma’lum vaqt oralig‘ida amal qiladi;
  • odatda 30 soniyada yangilanadi;
  • internetga doimiy ulanish talab qilmasligi mumkin;
  • secret key asosida hosil qilinadi;
  • 2FA tizimlarida keng ishlatiladi.

Google Authenticator, Microsoft Authenticator va Authy kabi ilovalar TOTP kodlar yaratadi.

Magic link — foydalanuvchi emailiga yuboriladigan maxsus login havolasi. Foydalanuvchi havolani bosganda tizimga kirishi mumkin.

Magic link jarayoni:

  • foydalanuvchi email kiritadi;
  • tizim maxsus tokenli link yuboradi;
  • foydalanuvchi emaildagi linkni bosadi;
  • backend tokenni tekshiradi;
  • foydalanuvchi tizimga kiritiladi.

Magic link parolsiz authentication usullaridan biridir.

Password reset

Password reset — foydalanuvchi parolini unutganda yangi parol o‘rnatish jarayoni.

Password reset jarayonida:

  • foydalanuvchi email yoki telefon kiritadi;
  • tizim reset token yoki kod yuboradi;
  • foydalanuvchi havola yoki kod orqali tasdiqlanadi;
  • yangi parol kiritiladi;
  • eski parol o‘rniga yangi hash saqlanadi.

Password reset authentication tizimining muhim qismidir.

Email verification

Email verification — foydalanuvchi kiritgan email manzil haqiqatan ham unga tegishli ekanini tasdiqlash jarayoni.

Email verification quyidagi holatlarda ishlatiladi:

  • registerdan keyin;
  • parol tiklashda;
  • email o‘zgartirilganda;
  • muhim xabarnomalar yuborishdan oldin;
  • spam akkauntlarni kamaytirishda.

Email verification odatda maxsus tokenli link orqali amalga oshiriladi.

Phone verification

Phone verification — foydalanuvchi telefon raqamini tasdiqlash jarayoni. Bu odatda SMS yoki telefon orqali yuborilgan kod bilan bajariladi.

Phone verification quyidagi joylarda ishlatiladi:

  • register;
  • login;
  • parol tiklash;
  • ikki bosqichli tasdiqlash;
  • to‘lov tizimlari;
  • e-commerce akkauntlari;
  • banking ilovalari.

Telefon tasdiqlash authentication jarayoniga qo‘shimcha identifikatsiya qatlami qo‘shadi.

Biometric authentication

Biometric authentication — foydalanuvchining biologik belgilariga asoslangan authentication usuli.

Biometrik usullar:

  • barmoq izi;
  • yuzni tanish;
  • ko‘z qorachig‘i;
  • ovoz;
  • qo‘l geometriyasi.

Mobil ilovalarda Face ID, Touch ID va Android biometric authentication keng ishlatiladi.

SSO

SSO — Single Sign-On, ya’ni bitta akkaunt orqali bir nechta tizimga kirish mexanizmi. SSO korporativ va katta platformalarda keng ishlatiladi.

SSO orqali:

Masalan, kompaniya xodimi bitta korporativ akkaunt bilan email, chat, CRM va ichki portalga kira olishi mumkin.

Identity provider

Identity provider — foydalanuvchi kimligini tasdiqlovchi tashqi yoki markaziy xizmat.

Identity provider misollari:

  • Google;
  • Microsoft;
  • GitHub;
  • Facebook;
  • Apple;
  • Auth0;
  • Okta;
  • Keycloak.

Identity provider authentication jarayonini markazlashtirish uchun ishlatiladi.

API key

API key — dastur yoki service’ni API oldida tanitish uchun ishlatiladigan maxsus kalit. API key foydalanuvchi emas, ko‘pincha ilova yoki serverni identifikatsiya qiladi.

API key quyidagi holatlarda ishlatiladi:

  • tashqi API’dan foydalanish;
  • service-to-service aloqa;
  • rate limit hisoblash;
  • billing tizimi;
  • analytics;
  • bot yoki integrationlar.

API key authenticationga o‘xshash ishlashi mumkin, lekin u har doim ham foydalanuvchi loginini bildirmaydi.

Service account

Service account — foydalanuvchi emas, balki dastur yoki service nomidan ishlaydigan maxsus akkaunt. Service account avtomatlashtirilgan tizimlarda ishlatiladi.

Service account quyidagi joylarda uchraydi:

Service account authentication jarayonida inson foydalanuvchisiz tizimlar o‘zaro tanishadi.

Authentication va authorization farqi

Authentication va authorization bir-biriga yaqin, lekin farqli tushunchalardir.

  • Authentication — foydalanuvchi kimligini tekshiradi;
  • Authorization — foydalanuvchi nimalarga ruxsatga ega ekanini belgilaydi;
  • authentication login jarayoniga tegishli;
  • authorization role va permission bilan bog‘liq;
  • authentication “Siz kimsiz?” savoliga javob beradi;
  • authorization “Sizga nima qilish mumkin?” savoliga javob beradi.

Masalan, foydalanuvchi login qilishi authentication, admin panelga kira olishi esa authorization hisoblanadi.

Role

Role — foydalanuvchining tizimdagi vazifasi yoki darajasi. Role authorization bilan bog‘liq bo‘lsa-da, authenticationdan keyingi jarayonda ko‘p ishlatiladi.

Role misollari:

  • admin;
  • moderator;
  • user;
  • editor;
  • manager;
  • owner;
  • guest.

Authentication foydalanuvchini aniqlaydi, role esa uning tizimdagi maqomini bildiradi.

Permission

Permission — foydalanuvchiga berilgan aniq ruxsat. Permission orqali foydalanuvchi qaysi amalni bajara olishi belgilanadi.

Permission misollari:

  • maqola yaratish;
  • maqolani tahrirlash;
  • foydalanuvchini o‘chirish;
  • buyurtmani ko‘rish;
  • to‘lovni tasdiqlash;
  • admin panelga kirish;
  • fayl yuklash.

Permission authorization qismiga tegishli, lekin authenticationdan keyin tekshiriladi.

CSRF

CSRF — Cross-Site Request Forgery, ya’ni foydalanuvchi nomidan ruxsatsiz so‘rov yuborish hujumi. Session va cookie asosidagi authentication tizimlarida CSRF muhim xavfsizlik tushunchasi hisoblanadi.

CSRF’dan himoya qilishda quyidagilar ishlatiladi:

CSRF authentication holatidan foydalanib zararli so‘rov yuborishga urinadi.

XSS

XSS — Cross-Site Scripting, ya’ni sahifaga zararli JavaScript kod kiritish hujumi. XSS authentication tokenlari, cookie’lar va foydalanuvchi sessiyasiga xavf tug‘dirishi mumkin.

XSS quyidagi joylarda yuzaga kelishi mumkin:

  • input maydonlari;
  • kommentlar;
  • profil tavsifi;
  • HTML render;
  • noto‘g‘ri sanitizatsiya;
  • xavfsiz bo‘lmagan third-party scriptlar.

Authentication tizimida XSS token yoki session ma’lumotlarini o‘g‘irlash xavfini oshiradi.

Brute force

Brute force — parol yoki kodni ko‘p urinishlar orqali topishga qaratilgan hujum turi.

Brute force quyidagi joylarda uchraydi:

Authentication tizimlarida brute force urinishlari rate limiting, captcha, account lockout yoki 2FA orqali cheklanishi mumkin.

Rate limiting

Rate limiting — ma’lum vaqt ichida so‘rovlar sonini cheklash mexanizmi. Authentication endpointlarda rate limiting login urinishlarini cheklash uchun ishlatiladi.

Rate limiting qo‘llanadigan joylar:

Bu mexanizm server yukini va zararli urinishlarni kamaytirishga yordam beradi.

Captcha

Captcha — foydalanuvchi inson yoki bot ekanini ajratish uchun ishlatiladigan tekshiruv. Authentication jarayonida captcha bot orqali login yoki register urinishlarini kamaytirish uchun ishlatilishi mumkin.

Captcha turlari:

Captcha login, register va password reset formalarida uchrashi mumkin.

Account lockout

Account lockout — ko‘p noto‘g‘ri login urinishlaridan keyin akkauntni vaqtincha bloklash mexanizmi.

Account lockout quyidagi holatlarda ishlatiladi:

  • parol ko‘p marta noto‘g‘ri kiritilganda;
  • OTP ko‘p marta noto‘g‘ri kiritilganda;
  • shubhali login urinishlari bo‘lganda;
  • brute force ehtimoli aniqlanganda.

Bloklash muddati tizim siyosatiga qarab farq qilishi mumkin.

Remember me

Remember me — foydalanuvchi browser yopilgandan keyin ham tizimga kirgan holatda qolishini ta’minlaydigan funksiya.

Remember me quyidagilar orqali ishlashi mumkin:

Bu funksiya foydalanuvchi qayta-qayta login qilmasligi uchun ishlatiladi.

Logout

Logout — foydalanuvchini tizimdan chiqarish jarayoni. Logout qilinganda session yoki token bekor qilinadi yoki client tomondagi authentication ma’lumotlari o‘chiriladi.

Logout jarayonida:

  • session tugatiladi;
  • cookie o‘chiriladi;
  • token clientdan olib tashlanadi;
  • refresh token bekor qilinishi mumkin;
  • foydalanuvchi guest holatiga qaytadi.

Logout authentication siklining yakuniy bosqichlaridan biridir.

Token expiration

Token expiration — tokenning amal qilish muddati tugashi. Access tokenlar odatda vaqt bilan cheklanadi.

Token expiration quyidagi maqsadlarda ishlatiladi:

  • eski tokenlar xavfini kamaytirish;
  • sessiya muddatini boshqarish;
  • refresh token mexanizmini ishlatish;
  • xavfsizlik siyosatini qo‘llash;
  • avtomatik logout holatini yaratish.

Token muddati tugaganda foydalanuvchi qayta login qilishi yoki refresh token orqali yangi token olishi mumkin.

Token blacklist

Token blacklist — bekor qilingan tokenlarni yaroqsiz deb belgilash ro‘yxati. JWT kabi stateless tokenlarda logout yoki token bekor qilish uchun blacklist ishlatilishi mumkin.

Token blacklist quyidagi holatlarda ishlatiladi:

  • logout;
  • parol almashtirish;
  • account bloklash;
  • refresh token bekor qilish;
  • xavfsizlik buzilishi;
  • admin tomonidan sessiyani tugatish.

Blacklist serverga token hali muddati tugamagan bo‘lsa ham uni qabul qilmaslik imkonini beradi.

Stateless authentication

Stateless authenticationserver foydalanuvchi session holatini saqlamaydigan authentication usuli. Bunda token ichida kerakli ma’lumot bo‘ladi va har bir so‘rov token orqali tekshiriladi.

Stateless authentication xususiyatlari:

Stateless authentication tokenning to‘g‘ri imzolanganini tekshirishga asoslanadi.

Stateful authentication

Stateful authenticationserver foydalanuvchi session holatini saqlaydigan authentication usuli.

Stateful authentication xususiyatlari:

  • serverda session ma’lumoti saqlanadi;
  • browserda session ID bo‘lishi mumkin;
  • session database yoki cache’da turishi mumkin;
  • logout serverdagi sessionni o‘chirishi mumkin;
  • klassik web ilovalarda ko‘p ishlatiladi.

Stateful authentication session management bilan bevosita bog‘liq.

Frontenddagi o‘rni

Frontend authentication jarayonida foydalanuvchi interfeysini va client tomondagi holatni boshqaradi.

Frontend’da authentication quyidagi joylarda ishlatiladi:

  • login formasi;
  • register formasi;
  • parol tiklash sahifasi;
  • token saqlash;
  • foydalanuvchi holatini ko‘rsatish;
  • protected route;
  • logout tugmasi;
  • profile sahifasi;
  • API so‘rovlariga token qo‘shish;
  • xatolik xabarlarini chiqarish.

Masalan, frontend foydalanuvchi login qilganidan keyin profil sahifasini ko‘rsatishi mumkin.

Backenddagi o‘rni

Backend authenticationning asosiy tekshiruv va xavfsizlik qismini bajaradi.

Backend’da authentication quyidagi vazifalarda ishlatiladi:

Backend har bir himoyalangan endpointda foydalanuvchi autentifikatsiyadan o‘tgan yoki o‘tmaganini tekshirishi mumkin.

API’dagi o‘rni

API authentication orqali har bir so‘rov qaysi foydalanuvchi yoki service tomonidan yuborilganini aniqlaydi.

API authentication usullari:

Masalan, GET /api/profile endpointi token orqali foydalanuvchini aniqlab, uning profil ma’lumotlarini qaytaradi.

Dasturlashdagi o‘rni

Authentication deyarli barcha foydalanuvchi akkaunti mavjud tizimlarda ishlatiladigan asosiy xavfsizlik mexanizmidir. U foydalanuvchi kimligini tekshiradi va tizimga kirish jarayonini boshqaradi.

Authentication quyidagi loyihalarda uchraydi:

  • web saytlar;
  • mobile ilovalar;
  • admin panellar;
  • internet do‘konlar;
  • SaaS platformalar;
  • CRM tizimlar;
  • banking ilovalari;
  • API service’lar;
  • korporativ tizimlar;
  • cloud platformalar.

Authentication foydalanuvchi, session, token va xavfsizlik jarayonlarini bog‘laydigan muhim dasturiy qatlam hisoblanadi.

Bog‘liq tushunchalar

Authorization, Login, Register, Session, Cookie, Token, JWT, OAuth, 2FA, Password hashing, API, Backend