Security
Published: 2023-08-06 11:28:58

**Koʻplab zamonaviy dasturlar quyidagi koʻrinishda boʻladi:**

1.Brauzerlar veb-dasturlar bilan bogʻlanadi
2. Veb-dasturlar veb-API-lar bilan (ba'zan oʻzlari, ba'zan foydalanuvchi nomidan) bog'lanadi
3. Brauzer asosli dasturlar veb-API-lar bilan bog'lanadi
4. Native dasturlar veb-API-lar bilan bog'lanadi
5. Server asosli dasturlar veb-API-lar bilan bog'lanadi
6. Veb-API-lar veb-API-lar bilan (ba'zan oʻzlari, ba'zan foydalanuvchi nomidan) bog'lanadi

## **Autentifikatsiya**
Autentifikatsiya - dastur userning identifikatsiyasini bilishi uchun kerak. Odatda, bu applicationlar foydalanuvchining ma'lumotlarini boshqaradi va uning faqat oʻzi uchun ruxsatlangan ma'lumotlarga kirishi mumkin boʻlishini ta'minlaydi.Ushbu usulning eng yaqqol namunasi (klassik) veb-dasturlar, lekin native va JS-asosli dasturlar ham autentifikatsiyaga ega.

Eng ommabop autentifikatsiya protokollari _SAML2p_, _WS-Federation_ va _OpenID Connect_ - SAML2p eng mashhur va keng tarqalgan.

OpenID Connect eng yangi protokol bolishiga qaramasdan,u zamonaviy dasturlar uchun eng qulaydir, chunki u boshidan mobil dasturlar uchun yaratilgan va API ga qoʻllash uchun mo'ljallangan.

## **APIga Kirish**
Dasturlar API-lar bilan bog'lanishning ikki asosiy usuli mavjud - dastur identifikatsiyasi orqali yoki foydalanuvchi identifikatsiyasini ko'chirish orqali. Ba'zan ikkala usulni bir xil vaqtida ishlatish kerak.

**OAuth2** - bu protokol, ilovalarga xavfsizlik tokenlarini xavfsizlik xizmatidan so'ralishga ruxsat beradi va ularni API bilan habarlash uchun ishlatishga imkon beradi. Ushbu delegatsiya, mijoz dasturlarda va API-larda murakkablikni kamaytiradi, chunki autentifikatsiya va ruxsat berish markaziy qilinadi.

## **OpenID Connect va OAuth 2.0** ##
OpenID Connect va OAuth 2.0 juda ham bir biriga oʻxshash, _OpenID Connect,_ OAuth 2.0 protokolidagi kengaytma hisoblanadi. Autentifikatsiya va APIga kirish - ikki asosiy xavfsizlik muammolari - yagona protokolga birlashtiriladi, va tezkorlik sababli xavfsizlik belgisi xizmatiga bir marotaba so'rov yuboriladi.

Biz OpenID Connect va OAuth 2.0 kombinatsiyasini koʻproq kelajakdagi dasturlarni xavfsizlashtirish uchun eng yaxshi usul deb hisoblaymiz. _IdentityServer4_ - bu ikki protokolni amaliyotga yetkazish bo'lib, bugungi mobil, native va veb-dasturlarning oddiy xavfsizlik muammolarini yechish uchun yaxshi optimallashtirilgan.

## **IdentityServer4 qanday yordam bera olishi mumkin?**
IdentityServer, biror bir ASP.NET Core dasturiga OpenID Connect va OAuth 2.0 nuqtalarini qo'shish orqali markaziy middleware sifatida ishlatiladi.

Odatda, siz login va logout sahifasini (va talab qilsa, rozilik sahifasini) tuzish yoki qayta ishlab chiqish kerak bolsa, IdentityServer middleware kerakli protokol sarlavhalarni qo'shadi, shunda mijoz dasturlar bilan o'zaro muloqot qilish uchun standart protokollarni ishlatishlari mumkin bo'ladi.






## **Terminologiya**

Xususiyatlarni, hujjatlarni va ob'ekt modelini ishlatadigan bir nechta terminologiya mavjud, uni bilib olishingiz kerak.

## **IdentityServer**
_IdentityServer_ - OpenID Connect taqdim etuvchi - u OpenID Connect va OAuth 2.0 protokollarni amalga oshiradi.

Turli adabiyotlar bir xil vazifani belgilash uchun turli yollarni qoʻllaydi - ehtimol, xavfsizlik belgisi xizmati, shaxsni tasdiqlash beruvchi tizim, tasdiqlash serveri, IP-STS va boshqalar.

Lekin qisqa qilib aytganda ukarning hammasi bir xil: taqdim etilgan xavfsizlik belgilarni mijozlarga beruvchi dastur.

_IdentityServerning bir qancha vazifalari va xususiyatlari mavjud:_
1.sizning resurslaringizni himoya qilish
2.foydalanuvchilarni mahalliy hisob-kitoblarga yoki tashqi shaxslar tasdiqlash tizimlari orqali autentifikatsiya qilish
3.session boshqaruvini taqdim etish va yagona kirishni taqdim etish
4.mijozlarni boshqarish va autentifikatsiya qilish
5.mijozlarga shaxs va kirish belgilari berish
6.belgilarni tasdiqlash

## **Foydalanuvchi-Use**
Foydalanuvchi, resurslarga kirish uchun roʻyxatga olingan mijozni ishlatadigan insondir.

## **Mijoz-Client**
Mijoz - IdentityServerdan tokenlarni soʻraydigan dastur qismidir - foydalanuvchini tasdiqlash (shaxs tokenini soʻrash) yoki resursga kirish (kirish tokenini soʻrash) maqsadida qilingan. Mijoz tokenlarni soʻrashdan oldin, IdentityServer dan roʻyxatdan oʻtishi kerak.

Mijozlar uchun misollar: veb-dasturlar, native mobil yoki desktop dasturlar, SPA-lar, server protsesslari va boshqalar.

## **Resurslar**
Resurslar - bu IdentityServer bilan himoya qilmoqchi bo'lgan narsalardir - foydalanuvchilaringizning shaxsiy ma'lumotlari yoki API-lar.

Har bir resursning yagona nomi mavjud - va mijozlar ushbu nomdan foydalanib, ularni qaysi resurslarga kirishni istayotganlarini aniqlash uchun ishlatadi.

Shaxsiy ma'lumotlar, Foydalanuvchi haqida ma'lumotlar (masalan, ism yoki elektron pochta manzili) haqida ma'lumotlar.

API-lar, API resurslari, mijozning faolligini chaqirishni istagan funksionalni tasvirlaydi - odatda Veb API-lar sifatida model qilinadi, lekin u zarur emas.

## **Identity Token**
Shaxsiylik tokenini autentifikatsiya jarayonining natijasini ifodalaydi. U foydalanuvchining qanday va qachon autentifikatsiya qilganligi haqida ma'lumotlarni kamida o'z ichiga oladi. Qo'shimcha shaxsiylik ma'lumotlari ham o'z ichiga olishi mumkin.

## **Access Token**
Access tokeni API resursiga kirishga ruxsat beradi. Mijozlar access tokenlarni soʻraydilar va ularni API ga yuboradilar. Access tokenlar mijoz va foydalanuvchi haqida ma'lumotlarni (mavjud bo'lsa) oʻz ichiga oladi. API-lar ushbu ma'lumotlarni oʻzlarining ma'lumotlariga kirishga ruxsat berish uchun foydalanadilar.