Осы жазба арқылы мен IdentityServer4-ке арналған мақалалар тізбегін ашқым келеді. Негізгі ұғымдардан бастайық.
Қазіргі уақытта аутентификацияның ең перспективалы протоколы болып табылады , және авторизация протоколы (қолжетімділікті қамтамасыз ету) болып табылады . осы екі хаттаманы жүзеге асырады. Ол шешу үшін оңтайландырылған типтік мәселелер қауіпсіздік.
аутентификация протоколы және стандарты болып табылады, ол ресурстарға (Web API) қол жеткізуді қамтамасыз етпейді, бірақ содан бері ол рұқсат беру хаттамасының жоғарғы жағында құрастырылған , ол ресурсқа қол жеткізген сияқты пайдаланушы профилінің параметрлерін алуға мүмкіндік береді .
(JSON Web Token) – шифрланған пішінде JSON пішімінде пайдаланушы деректерін жіберу жолын анықтайтын веб стандарты.
рұқсат беру хаттамасы және стандарты болып табылады. Ол қолданбаларға Web API сияқты қорғалған ресурстарға қол жеткізуге мүмкіндік береді.
Қорғалған ресурсқа қол жеткізу диаграммасын қарастырайық және негізгі қадамдар мен қабылданған терминологияны түсінейік:

Клиент пайдаланушыдан оның атынан аутентификацияға рұқсат сұрайды. Клиент ресурс иесінің атынан қорғалған ресурстарға қатынасатын клиенттік қолданба болып табылады. ресурс - бұл біздің қорғалған қызметтеріміз .
Пайдаланушы клиенттік қолданбаға оның атынан аутентификациялауға мүмкіндік береді, мысалы, логин мен құпия сөзді енгізу арқылы. Логин мен құпия сөз клиент қолданбасы үшін авторизация болады. Пайдаланушы (ресурс иесі) — қорғалған ресурстарға рұқсат бере алатын бағдарлама немесе тұлға, мысалы, логин (пайдаланушы аты) және пароль (пароль) енгізу арқылы;
Клиент қолданбасы кіру таңбалауышын сұрайды
IdentityServer4өзіңіз туралы ақпарат беру арқылы (client_id,client_secret), пайдаланушыдан авторизация рұқсатын беру (username,password) және қамтамасыз етуgrant_typeиscope. Содан кейін авторизация сервері клиенттің түпнұсқалығын және ресурс иесінің мәліметтерін (логин мен пароль) тексереді.OAuth 2.0 протоколы пайдаланушыны ғана емес, сонымен қатар ресурстарға қатынасатын клиенттік қолданбаны да аутентификациялайды. Осы мақсатта хаттамада осындай параметрлер қарастырылған клиент_идентификаторы и клиент_құпиясы.
клиент_идентификаторы пайдаланылатын клиент қолданбасының идентификаторы болып табыладыIdentityServer4клиент туралы ақпаратты іздеу.
клиент_құпиясы клиенттік қолданбаға арналған құпия сөзге ұқсас және клиенттік қолданбаның түпнұсқалығын растау үшін пайдаланыладыIdentityServer4. Клиент құпиясы тек қолданбаға және API-ге белгілі болуы керек. Жоғарыда айтылғандарға сүйене отырып, біз қорытынды жасаймыз IdentityServer4 өз клиенттері туралы білуі керек.Қолданба аутентификацияланған болса және авторизация рұқсаты жарамды болса,
IdentiryServer4жасайдыaccess-токенқолданбаға арналған (қатынау белгісі) және қосымша жаңарту кілті (refresh-токен). Авторизация процесі аяқталды. Сұрау жарамсыз немесе рұқсат етілмеген болса, авторизация сервері сәйкес қате туралы хабары бар кодты қайтарады.Клиент қолданбасы деректерге арналған қауіпсіз Web API интерфейсіне қол жеткізеді, авторизацияға кіру таңбалауышын қамтамасыз етеді. Ресурс серверінің жауап коды болса , немесе , содан кейін аутентификация үшін пайдаланылатын қатынас белгісі жарамсыз немесе мерзімі өтіп кеткен.
Егер белгі жарамды болса,
Web APIқолданбаға деректерді береді.
Токендердің түрлері
Тіркелген IdentityServer4 клиенттерге сұрауға рұқсат етіледі IdentityServer4 identity-жетон, access-жетон және refresh-жетон.
- сәйкестендіру белгісі (сәйкестендіру белгісі) — аутентификация процесінің нәтижесі. Пайдаланушы идентификаторы және пайдаланушының түпнұсқалығы қалай және қашан расталғаны туралы ақпаратты қамтиды. Сіз оны өзіңіздің деректеріңізбен кеңейте аласыз.
- қол жеткізу белгісі — қорғалған API-ге жіберіледі және ол өз деректеріне авторизациялау (кіруге рұқсат беру) үшін пайдаланылады.
- жаңарту белгісі (жаңарту белгісі) рұқсат таңбалауышы сұрауына жауап ретінде авторизация сервері қайтара алатын қосымша параметр болып табылады.
Тағы екі ұғымды енгізейік:
Аутентификация серверінің URL мекенжайы — кіру кілтін алуға арналған соңғы нүкте. Біз осы URL мекенжайына кіру кілттерін ұсыну және жаңарту туралы барлық сұрауларды жібереміз.
Ресурс URL мекенжайы — Авторизация тақырыбына кіру кілтін беру арқылы оған қол жеткізу үшін байланысу керек қорғалған ресурстың URL мекенжайы.
Кіру кілтін сұрау
Кіру кілтін сұрау үшін клиент жасайды POST соңғы нүктеге сұрау IdentityServer4 келесі тақырыппен
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'және келесі параметрлерді беру:
'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'username, password, client_id и client_secret жоғарыда талқыланды. Қалған параметрлерді қарастырайық:
грант_түрі — грант түрі немесе рұқсат түрі. Авторизация рұқсатының түрі қолданба пайдаланатын авторизация сұрау әдісіне, сондай-ақ API қандай рұқсат түрлерін қолдайтынына байланысты. Біздің жағдайда бұл маңызды болады password, бұл спецификацияға сәйкес OAuth 2.0 ресурс иесінің қол жеткізу мәліметтерін беруіне сәйкес келеді (логин және пароль арқылы авторизация).
Хаттама OAuth 2.0 талап ететін гранттардың келесі түрлерін анықтайды пайдаланушылармен міндетті өзара әрекеттесу:
- авторизация коды. Бұл авторизациялық рұқсаттың ең көп тараған түрлерінің бірі, өйткені қолданбаның бастапқы коды мен клиент құпиясына бөгде адамдар қол жеткізе алмайтын серверлік қосымшалар үшін өте қолайлы;
- жасырын. Жасырын авторизацияның рұқсат түрі клиент құпиясының құпиялылығына кепілдік берілмейтін мобильді және веб-қосымшалар арқылы пайдаланылады;
Және гранттардың түрлері пайдаланушының араласуынсыз орындалуы мүмкін:
- ресурс иесінің мәліметтері. Рұқсаттың бұл түрі клиенттік қолданбаға пайдаланушы сенімді болса және пайдаланушы өзінің логин мен құпия сөзін енгізуге ыңғайлы болса ғана пайдаланылуы керек. Бұл рұқсат түрін басқа опциялар болмаған кезде ғана пайдалану керек. Рұқсаттың бұл түрі өз жүйесінде пайдаланушы тіркелгі деректерін пайдаланған және келесіге ауысқысы келетін корпоративтік клиенттер үшін ыңғайлы.
OAuth 2.0. - клиенттің тіркелгі деректері. Қолданба API интерфейсіне кірген кезде пайдаланылады. Бұл, мысалы, қолданба өзінің қызметтік тіркеу ақпаратын жаңартқысы келгенде немесе URI мекенжайын қайта бағыттағысы келгенде немесе API қызметі арқылы қолданбаның қызмет тіркелгісінде сақталған басқа ақпаратқа қол жеткізгісі келгенде пайдалы болуы мүмкін.
ауқымы - Бұл қосымша параметр. Ол аумақты анықтайды. Сервер қайтарған кіру таңбалауышы тек осы аумаққа кіретін қызметтерге қатынасты қамтамасыз етеді. Анау. біз бірнеше қызметтерді бір аумақта біріктіре аламыз және егер клиент осы аумаққа кіру кілтін алса, ол осы қызметтердің барлығына қол жеткізе алады. Аумақ авторизация құқықтарын шектеу үшін де пайдаланылуы мүмкін (мысалы, оқу немесе жазу рұқсаты)
Ақпарат көзі: www.habr.com
