Middle
OAuth autentifikatsiyasi nima va qanday ishlaydi?
sobes.tech AI
AIdan javob
OAuth — bu ochiq standart bo‘lib, u foydalanuvchiga o‘z ma’lumotlariga cheklangan kirishni uchinchi tomon ilovasiga taqdim etish imkonini beradi, bu ilovaga o‘z hisob ma’lumotlarini (login/parol) uzatmasdan.
OAuth ishlash prinsipi — bu ma’lumotlar o‘rniga "kirish tokenlari" ni berish. Tipik oqim quyidagicha ishlaydi:
- Autorizatsiya so‘rovi: Foydalanuvchi uchinchi tomon ilovasida ma’lumotlarga kirishni talab qiladigan harakatni amalga oshirishga harakat qiladi. Ilova, resurs serverining autorizatsiya serveriga so‘rov yuboradi.
- Autorizatsiya serveriga yo‘naltirish: Foydalanuvchi, autorizatsiya serverining sahifasiga yo‘naltiriladi.
- Foydalanuvchini autentifikatsiya qilish: Foydalanuvchi, agar hali qilmagan bo‘lsa, autorizatsiya serverida autentifikatsiya qilinadi.
- Foydalanuvchi roziligi: Autorizatsiya serveri, foydalanuvchidan uchinchi tomon ilovasiga ma’lumotlariga cheklangan kirishni berish uchun ruxsat so‘raydi (scopes). Foydalanuvchi, so‘rovni qabul qilishi yoki rad etishi mumkin.
- Autorizatsiya kodining berilishi: Agar foydalanuvchi rozilik bildirsa, autorizatsiya serveri foydalanuvchini yana ilovaga yo‘naltiradi va "autorizatsiya kodini" taqdim etadi.
- Autorizatsiya kodini kirish tokeniga almashtirish: Uchinchil tomon ilova, kodni olgach, to‘g‘ridan-to‘g‘ri autorizatsiya serveriga so‘rov yuborib, bu kodni "kirish tokeni" va ixtiyoriy ravishda "yangilash tokeni" ga almashtiradi. Bu so‘rovlar serverlar o‘rtasida amalga oshiriladi, foydalanuvchining brauzeri orqali emas, bu esa xavfsizlikni oshiradi.
- Ma’lumotlarga kirish: Uchinchil tomon ilova, olingan kirish tokenidan foydalanib, foydalanuvchi nomidan resurs serveriga so‘rovlar yuboradi. Har bir so‘rovda token bo‘lishi shart.
- Tokenni tekshirish: Resurs serveri, kirish tokenini tekshiradi va agar u haqiqiy va so‘ralgan scope’lar bilan mos kelsa, ma’lumotlarga kirishni ta’minlaydi.
OAuth uchun bir nechta oqimlar (flows) mavjud bo‘lib, ular turli vaziyatlarga mos keladi, masalan:
- Authorization Code Flow: Eng xavfsizi, server tomonli veb-ilovalar uchun mo‘ljallangan.
- Implicit Flow: Eskirgan, brauzer asosidagi ilovalar uchun ishlatiladi.
- Client Credentials Flow: O‘z resurslariga kirish uchun, foydalanuvchi resurslariga emas.
- Resource Owner Password Credentials Flow: Tavsiya etilmaydi, foydalanuvchi ma’lumotlarini ilovaga uzatadi.
(Authorization Code Flow misoli)
C# da OAuth ni veb-ilovalarda amalga oshirish uchun, odatda, ASP.NET Core Identity kabi kutubxonalar, turli provayderlar (Google, Facebook va boshqalar) yoki IdentityServer kabi kutubxonalar yordamida o‘z autorizatsiya serveringizni yaratish mumkin.