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 , və avtorizasiya (giriş) protokoludur . 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.
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 , o, resursa daxil olmuş kimi istifadəçi profili parametrlərini əldə etməyə imkan verir .
(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.
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:

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 .
İ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;
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 edirgrant_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 identifikatorudurIdentityServer4müş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ə olunurIdentityServer4. 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.Ərizənin həqiqiliyi təsdiq edildikdə və avtorizasiya icazəsi etibarlıdırsa,
IdentiryServer4yaradıraccess-токен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.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 , və ya , onda autentifikasiya üçün istifadə edilən giriş nişanı etibarsızdır və ya vaxtı keçmişdir.
Əgər nişan etibarlıdırsa,
Web APItə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
