Sobes.tech
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:

  1. 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.
  2. Autorizatsiya serveriga yo‘naltirish: Foydalanuvchi, autorizatsiya serverining sahifasiga yo‘naltiriladi.
  3. Foydalanuvchini autentifikatsiya qilish: Foydalanuvchi, agar hali qilmagan bo‘lsa, autorizatsiya serverida autentifikatsiya qilinadi.
  4. 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.
  5. Autorizatsiya kodining berilishi: Agar foydalanuvchi rozilik bildirsa, autorizatsiya serveri foydalanuvchini yana ilovaga yo‘naltiradi va "autorizatsiya kodini" taqdim etadi.
  6. 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.
  7. 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.
  8. 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.