Security
Tags: authentication, apiacces, openid, identityserver4
Published: 2023-08-06 10:27:35


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68ud3bkx3izmilii10bb.png)

**Dasturlarning bir biri bilan bog'lanishi:**
- Brauzerlar web-ilovalar bilan bog'lanadi
- Web-ilovalar API bilan bog'lanadi(bazan ilova nomidan, bazan foydalanuvchi nomidan)
- Brauzerlarga bog'langan ilovalar API bilan bog'lanadi
- Server asoslangan ilovalar API bilan bog'lanadi
- API lar API lar bilan bog'lanadi(bazan ilova nomidan, bazan foydalanuvchi nomidan)

**Authentication**
- Ilova foydalanuvchining Identity bilishi kerak bo'lsa Authentication ishlatiladi. Odatda ilovalar ma'lumotlarni foydalanuvchi nomidan boshqaradi va foydalanuvchi faqat ruxsat berilgan ma'lumotlarnigina ko'radi. (Classic) web-ilovalarda bundan keng foydalaniladi.

- Eng keng tarqalgan Authentication protokollar (SAML2p, WS-Federation va OpenID Connect - SAML2p) eng ommabot va eng ko'p tarqalganlari hisoblanadi.

**API ACCESS**
- Ilovalar API lar bilan bog'lash uchun 2 ta usuldan foydalaniladi - Ilova Identity sidan foydalanish yoki foydalanuvchi Identity sinidan foydalanish. Bazan 2 la usuldan ham foydalaniladi.

**OpenID Connect va OAuth 2.0 - birgalikda yaxshiroq**
- OpenID Connect va OAuth 2.0 juda o'xshash. OpenID Connect OAuth 2.0 ning yuqori qismidagi bir kengaytma. OpenID Connect va OAuth 2.0 yaqin kelajakda ilovalarni security sini taminlashda eng yaxshi vosita hisoblanadi. IdentityServer4 - bu ikki protolning amalga oshirilishi va bugungi Mobile, Web-Application larning security bilan bo'ladigan muammolarini hal qilish uchun yuqori darajada optimallashtirilgan.

**IdentityServer4 qanday yordan berishi mumkun?**
- IdentityServer4, .NET Core uchun ochiq manba kodi bo'lgan OAuth 2.0 va OpenID Connect protokollari asosida ishlaydigan sertifikat va identifikatsiya serveri. 
- Odatda ilovalarda Login Logout sihifalarini yaratasiz(qayta ishlatasiz) yoki foydalanasiz. IdentityServer protokolidan foydalanish
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3flzskmihxl94t0rfyi.png)

**Terminalogiya**

- Xususiyatlar, hujjatlar va ob'ekt modeli siz bilishingiz kerak bo'lgan ma'lum bir terminologiyadan foydalanadi.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/skq6sg9otkgfdd0g07gs.png)

**IdentityServer bir qator ishlar va xususiyatlarga ega:**

- Resurslaringizni himoya qiling
- Mahalliy hisob do'konidan yoki tashqi identifikatsiya provayderi 
orqali foydalanuvchilarni autentifikatsiya qilish
- Seansni boshqarish va yagona tizimga kirishni ta'minlash
- Mijozlarni boshqarish va autentifikatsiya qilish
- Mijozlarga identifikatsiya va kirish tokenlarini chiqarish
- Tokenlarni tasdiqlash

**Foydalanuvchi**
- Foydalanuvchi - resurslarga kirish uchun ro'yxatdan o'tgan mijozdan foydalanadigan odam

**Mijoz**
- Mijoz foydalanuvchini autentifikatsiya qilish (identifikatsiya belgisini so'rash) yoki resursga kirish (kirish tokenini so'rash) uchun IdentityServer'dan tokenlarni so'raydigan dasturiy ta'minot qismidir. Mijoz tokenlarni soʻrashi uchun avval IdentityServerda roʻyxatdan oʻtgan boʻlishi kerak.

- Mijozlar uchun misollar web-ilovalar, mahalliy Mobile yoki Desktop ilovalari, Server jarayonlari va boshqalar.

**Resurslar**
- Resurslar IdentityServer bilan himoya qilmoqchi bo'lgan narsadir  foydalanuvchilarning identifikatsiya ma'lumotlari yoki API.

- Har bir resursning o'ziga xos nomi bor va mijozlar ushbu nomdan qaysi manbalarga kirishni xohlashlarini belgilash uchun foydalanadilar.

- Identifikatsiya maʼlumotlari Foydalanuvchi haqidagi identifikator maʼlumotlari (masalan, ism yoki elektron pochta manzili).

- API API resurslari mijoz ishlatmoqchi bo'lgan funksionallikni ifodalaydi - odatda Web API sifatida modellanadi, lekin shart emas.

**Identity token**
- Identity belgisi Authentication jarayonining natijasini ifodalaydi. Unda hech bo'lmaganda foydalanuvchi uchun identifikator va foydalanuvchi qanday va qachon autentifikatsiya qilinganligi haqidagi ma'lumotlar mavjud bo'ladi. U qo'shimcha identifikatsiya ma'lumotlarini o'z ichiga olishi mumkin.

**Kirish tokeni**
- Kirish tokeni API resursiga kirish imkonini beradi. Mijozlar kirish tokenlarini so'rashadi va ularni API-ga yuboradilar. Kirish tokenlari mijoz va foydalanuvchi (agar mavjud bo'lsa) haqidagi ma'lumotlarni o'z ichiga oladi. API bu maʼlumotlardan oʻz maʼlumotlariga kirish huquqini berish uchun foydalanadi.