Identity Server4. Əsas anlayışlar. OpenID Connect, OAuth 2.0 və JWT

Bu yazı ilə mən IdentityServer4-ə həsr olunmuş məqalələr silsiləsi açmaq istəyirəm. Əsas anlayışlardan başlayaq.

Hazırda ən perspektivli autentifikasiya protokoludur OpenID qoşun, və avtorizasiya (giriş) protokoludur OAuth 2.0. Identity Server4 bu iki protokolu həyata keçirir. Həll etmək üçün optimallaşdırılmışdır tipik problemlər təhlükəsizlik.

OpenID qoşun autentifikasiya protokolu və standartıdır, o, resurslara (Web API) çıxışı təmin etmir, lakin o vaxtdan bəri avtorizasiya protokolunun üstündə tərtib edilmişdir OAuth 2.0, o, resursa daxil olmuş kimi istifadəçi profili parametrlərini əldə etməyə imkan verir İstifadəçi Məlumatı.

J.W.T. (JSON Web Token) istifadəçi məlumatlarının şifrələnmiş formada JSON formatında necə ötürüldüyünü müəyyən edən veb standartdır.

OAuth 2.0 (RFC 6749) protokol və icazə standartıdır. O, tətbiqlərə Veb API kimi qorunan resurslara daxil olmağa imkan verir.

Gəlin qorunan resursa daxil olmaq diaqramına nəzər salaq və əsas addımları və qəbul edilmiş terminologiyanı anlayaq:

Identity Server4. Əsas anlayışlar. OpenID Connect, OAuth 2.0 və JWT

  1. Müştəri istifadəçidən onların adından autentifikasiya etmək üçün icazə istəyir. Müştəri resurs sahibinin adından qorunan resurslara daxil olan müştəri proqramıdır. vəsait - bunlar hamısı bizim təhlükəsiz xidmətlərimizdir Veb API.

  2. İstifadəçi müştəri tətbiqinə onun adından avtorizasiya keçməyə imkan verir, məsələn, istifadəçi adı və parol daxil edir. Loqin və parol müştəri tətbiqi üçün icazə qrantı olacaq. İstifadəçi (resurs sahibi) - məsələn, login (istifadəçi adı) və parol (parol) daxil etməklə qorunan resurslara giriş imkanı verən proqram və ya şəxs;

  3. Müştəri tətbiqi ondan giriş nişanı tələb edir IdentityServer4 özünüz haqqında məlumat verməkləclient_id, client_secret), istifadəçidən icazə icazəsinin verilməsi (username, password) və təmin edir grant_type и scope. Sonra avtorizasiya serveri müştərini və resurs sahibinin təfərrüatlarını (giriş və şifrə) autentifikasiya edir.

    OAuth 2.0 protokolu təkcə istifadəçini deyil, həm də resurslara daxil olan müştəri tətbiqini autentifikasiya edir. Bunun üçün protokol belə parametrləri təmin edir müştəri_id и müştəri_sirəsi.
    müştəri_id istifadə olunan müştəri tətbiqi identifikatorudur IdentityServer4 müştəri məlumatlarını axtarmaq üçün.
    müştəri_sirəsi müştəri tətbiqi üçün parolun analoqudur və müştəri tətbiqinin autentifikasiyası üçün istifadə olunur IdentityServer4. Müştəri sirri yalnız proqrama və API-yə məlum olmalıdır. Yuxarıda göstərilənlərə əsaslanaraq belə qənaətə gəlirik IdentityServer4 öz müştəriləri haqqında bilməlidir.

  4. Ərizənin həqiqiliyi təsdiq edildikdə və avtorizasiya icazəsi etibarlıdırsa, IdentiryServer4 yaradır access-токен proqram üçün (giriş nişanı) və əlavə yeniləmə açarı (refresh-токен). Avtorizasiya prosesi başa çatıb. Əgər sorğu etibarsızdırsa və ya icazəsizdirsə, avtorizasiya serveri müvafiq xəta mesajı ilə kodu qaytarır.

  5. Müştəri proqramı avtorizasiya üçün giriş nişanı təqdim edərkən təhlükəsiz Veb API-dən məlumat tələb edir. Əgər resurs serverinin cavab kodu 401, 403 və ya 498, onda autentifikasiya üçün istifadə edilən giriş nişanı etibarsızdır və ya vaxtı keçmişdir.

  6. Əgər nişan etibarlıdırsa, Web API tətbiqə məlumat verir.

Tokenlərin növləri

Qeydiyyatdan keçib IdentityServer4 müştərilərə müraciət etməyə icazə verilir IdentityServer4 identity- nişan, access-token və refresh- nişan.

  • şəxsiyyət nişanı (identifikasiya nişanı) - autentifikasiya prosesinin nəticəsi. İstifadəçi identifikatorunu və istifadəçinin necə və nə vaxt autentifikasiya edildiyi barədə məlumatları ehtiva edir. Məlumatlarınızı genişləndirə bilərsiniz.
  • giriş nişanı (giriş nişanı) - təhlükəsiz API-yə ötürülür və məlumatlarına icazə vermək (giriş icazəsi) üçün istifadə olunur.
  • təzələmə nişanı (təzələmə nişanı) avtorizasiya serverinin giriş nişanı sorğusuna cavab olaraq qaytara biləcəyi isteğe bağlı parametrdir.

Daha iki anlayışı təqdim edək:

Doğrulama Server URL-i - Giriş nişanını əldə etmək üçün son nöqtə. Giriş açarlarını təmin etmək və yeniləmək üçün bütün sorğular bu URL-ə göndəriləcək.

Resurs URL — Avtorizasiya başlığında giriş açarını ötürməklə, ona daxil olmaq üçün əldə ediləcək qorunan resursun URL-i.

Giriş açarı sorğusu

Giriş açarı tələb etmək üçün müştəri bunu edir POST son nöqtə sorğusu IdentityServer4 aşağıdakı başlıq ilə

'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'

və aşağıdakı parametrləri keçir:

'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'

username, password, client_id и client_secret yuxarıda sökülüblər. Qalan variantlara baxaq:

qrant növü — qrant növü və ya icazə icazəsi növü. Avtorizasiya icazəsi növü tətbiqin avtorizasiya tələb etmək üçün istifadə etdiyi üsuldan, həmçinin API tərəfindən hansı icazə növlərinin dəstəkləndiyindən asılıdır. Bizim vəziyyətimizdə bunun əhəmiyyəti olacaq passwordspesifikasiyaya uyğun olaraq OAuth 2.0 resurs sahibinin giriş təfərrüatlarının verilməsinə (login və şifrə ilə avtorizasiya) uyğun gəlir.

Protokol OAuth 2.0 tələb olunan qrantların aşağıdakı növlərini müəyyən edir istifadəçilərlə məcburi qarşılıqlı əlaqə:

  • avtorizasiya kodu. Avtorizasiya icazəsinin ən çox yayılmış növlərindən biridir, çünki proqram mənbə kodunun və müştəri sirrinin kənar şəxslər üçün əlçatan olmadığı server tərəfi proqramlar üçün yaxşı uyğundur;
  • gizli. Gizli avtorizasiya icazə növü müştəri sirrinin məxfiliyinə zəmanət verilə bilməyən mobil və veb proqramlar tərəfindən istifadə olunur;

Və qrantların növləri istifadəçilərlə interaktiv əlaqə olmadan həyata keçirilə bilər:

  • resurs sahibi təfərrüatları. Bu cür icazə yalnız o halda istifadə edilməlidir ki, müştəri proqramı istifadəçi tərəfindən etibar edilsin və istifadəçi öz istifadəçi adı və şifrəsini rahat şəkildə daxil etsin. Bu icazə növü yalnız başqa seçimlər olmadıqda istifadə edilməlidir. Bu cür icazə öz sistemində artıq istifadəçi etimadnaməsini istifadə etmiş və keçid etmək istəyən korporativ müştərilər üçün faydalıdır. OAuth 2.0.
  • müştəri etimadnaməsi. Tətbiq API-yə daxil olduqda istifadə olunur. Bu, məsələn, proqram öz xidmət qeydiyyatı məlumatını yeniləmək və ya URI-ni yönləndirmək və ya xidmətin API vasitəsilə tətbiqin xidmət hesabında saxlanılan digər məlumatlara daxil olmaq istədikdə faydalı ola bilər.

vüsət isteğe bağlı parametrdir. O, əhatə dairəsini müəyyənləşdirir. Server tərəfindən qaytarılan giriş nişanı yalnız həmin əhatə dairəsində olan xidmətlərə girişə icazə verəcək. Bunlar. biz bir neçə xidməti bir əhatə dairəsi altında birləşdirə bilərik və əgər müştəri bu sahəyə giriş açarı alırsa, o, bütün bu xidmətlərə çıxış əldə edir. Həmçinin əhatə dairəsi avtorizasiya hüquqlarını məhdudlaşdırmaq üçün istifadə edilə bilər (məsələn, oxumaq və ya yazmaq imkanı)

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster