Selle postitusega soovin alustada artiklite seeriat, mis on pĂŒhendatud IdentityServer4-le. Alustame peamistest mĂ”istetest.
Praegu on kĂ”ige perspektiivikam autentimisprotokoll , autoriseerimise (juurdepÀÀsu andmise) protokoll on . , mis toetab neid kaht protokolli. See on optimeeritud tĂŒĂŒpiliste probleemide lahendamiseks turvalisuse. â see on autentimisprotokoll ja standard, mis ei anna juurdepÀÀsu ressurssidele (Web API), kuid kuna see on vĂ€lja töötatud autoriseerimisprotokolli pinnal
, vÔimaldab see saada kasutaja profiili parameetreid, justkui oleksite saanud juurdepÀÀsu ressursile UserInfo .
OAuth 2.0 (RFC 6749)
Vaadakem, kuidas kaitstud ressursse kutsuda, ja selgitage peamisi samme ja aktsepteeritud terminoloogiat:
Kliendi rakendus palub kasutajalt luba autoriseerimise lÀbiviimiseks tema nimel.

â see on kliendirakendus, mis pöördub kaitstud ressursside poole omaniku nimel. Kliendi â need on kĂ”ik meie kaitstud teenused Allikas Kasutaja lubab kliendirakendusel autoriseerimise lĂ€bi viia tema nimel, nĂ€iteks sisestades sisselogimise ja parooli. Sisselogimine ja parool on autoriseerimisĂ”iguse andmise tĂ”end kliendirakendusele. .
Kasutaja (ressursi omanik) â programm vĂ”i inimene, kes vĂ”ib anda juurdepÀÀsu kaitstud ressurssidele, nĂ€iteks sisselogimise (username) ja parooli (password) sisestamise teel; Kliendirakendus kĂŒsib juurdepÀÀsu mĂ€rki
esitamata enda kohta teavet (
IdentityServer4client_secretclient_id,), kasutades kasutaja autoriseerimisluba () ja esitadesusername,paroolgrant_type. SeejÀrel kontrollib autoriseerimiserver kliendi ja ressursi omanikku (sisselogimine ja parool) autentimist.jascopeOAuth 2.0 protokoll tÔendab mitte ainult kasutaja, vaid ka kliendirakenduse, mis pÀÀseb ressurssidele. Selleks on protokollis ette nÀhtud sellised parameetrid naguclient_id client_id ja ), kasutades kasutaja autoriseerimisluba (.
â see on kliendirakenduse identifikaator, mida kasutatakse kliendi teabe otsimiseks.IdentityServer4on kliendirakenduse parooli analoog ja seda kasutatakse kliendirakenduse autentimiseks.
), kasutades kasutaja autoriseerimisluba ( on kliendi rakenduse sarnane parool, mida kasutatakse kliendi rakenduse autentimiseksIdentityServer4. Kliendi saladus peab olema teada ainult rakendusele ja API-le. Ălaltoodust lĂ€htudes jĂ€reldame, et IdentityServer4 peab teadma oma kliente.Kui rakenduse ehtsust on kinnitatud ja autoriseerimise luba on kehtiv,
IdentiryServer4loobaccess-token'i(ligipÀÀsutoken) rakenduse jaoks ja valikulise vĂ€rskendustĂ”e (refresh-token). Autoriseerimisprotsess on lĂ”petatud. Kui pĂ€ring on kehtetu vĂ”i volitamata, tagastab autoriseerimiserver vastuse koos vastava veateatega.Kliendirakendus kĂŒsib andmeid kaitstud Web API-lt, esitades samas ligipÀÀsutokeni autoriseerimiseks. Kui serveri ressursside vastuskood , vĂ”i , siis on autoriseerimiseks kasutatud ligipÀÀsutoken kehtetu vĂ”i aegunud.
Kui token on kehtiv,
Veebi APItagastab andmed rakendusele.
Tokenite tĂŒĂŒbid
Registritud IdentityServer4 klientidele lubatakse kĂŒsida IdentityServer4 identity-tokenit, access-tokenit ja vĂ€rskenda-tokenit.
- identity-token (identifitseerimistoken) on autentsuse protsessi tulemus. Sisaldab kasutaja identifikaatorit ja teavet selle kohta, kuidas ja millal kasutaja autentimiseks lÀbib. Saate laiendada oma andmetega.
- access-token (ligipÀÀsutoken) edastatakse kaitstud API-le ja kasutatakse selle poolt autoriseerimiseks (ligipÀÀsu lubamiseks) oma andmetele.
- refresh-token (vÀrskendustoken) on valikuline parameeter, mille autoriseerimiserver vÔib tagastada vastuseks ligipÀÀsutokeni pÀringule.
Tutvustame veel kahte mÔistet:
Authenticatation Server Url on lÔpp-punkt, mille kaudu pÀÀseb juurde ligipÀÀsuvÔtmele. KÔik pÀringud ligipÀÀsuvÔtme vÀljastamiseks ja uuendamiseks saadetakse sellele URL-ile.
Resource Url on kaitstud ressursi URL, millele tuleb pöörduda, et sellele ligi pÀÀseda, edastades selle kaudu ligipÀÀsuvÔtme autoriseerimise pÀises.
LigipÀÀsuvÔtme pÀrimine
LigipÀÀsuvÔtme pÀrimiseks teeb klient POST pÀringu lÔpp-punktile IdentityServer4 jÀrgmise pÀisega
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'ja edastades jÀrgmised parameetrid:
'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'username, parool, client_id ja ), kasutades kasutaja autoriseerimisluba ( olid eelnevalt kĂ€sitletud. Uurime ĂŒlejÀÀnud parameetreid:
. SeejĂ€rel kontrollib autoriseerimiserver kliendi ja ressursi omanikku (sisselogimine ja parool) autentimist. â mandaatide vĂ”i volituste tĂŒĂŒp. Volituse tĂŒĂŒp sĂ”ltub rakenduse poolt kasutatavast autoriseerimismeetodist ja sellest, milliseid volitustĂŒĂŒpe API toetab. Meie puhul on see parool, vastavalt spetsifikatsioonile OAuth 2.0 vastab ressursiomaniku juurdepÀÀsuvĂ”imaluste mandaatidele (autoriseerimine kasutajanime ja parooli abil).
Protokoll OAuth 2.0 mÀÀratleb jĂ€rgmised volitustĂŒĂŒbid, mis nĂ”uavad kohustuslikku kasutajate kaasamise:
- autoriseerimiskood (authorization code). See on ĂŒks levinumaid autoriseerimistĂŒĂŒpe, kuna see sobib hĂ€sti serveripoolsete rakenduste jaoks, kus rakenduse lĂ€htekood ja kliendi saladus ei ole kolmandate isikute kĂ€tte saadavad;
- kaudne (implicit). Kaudset autoriseerimistĂŒĂŒp on kasutatakse mobiil- ja veebirakendustes, kus kliendi saladuse konfidentsiaalsust ei saa tagada;
Ja volitustĂŒĂŒbid, mis vĂ”ivad toimuda ilma interaktiivse kasutajate kaasamiseta:
- ressursiomaniku andmed (resource owner). Seda autoriseerimistĂŒĂŒpi tuleks kasutada ainult siis, kui kliendirakendus naudib kasutaja usaldust ja kasutaja vĂ”ib rahulikult oma kasutajanime ja parooli sisestada. Seda autoriseerimistĂŒĂŒpi tuleks kasutada ainult siis, kui teised variandid pole saadaval. See autoriseerimistĂŒĂŒp on mugav ettevĂ”tte klientidele, kes on oma sĂŒsteemis juba kasutanud kasutaja mandaatide andmeid ja soovivad minna ĂŒle
OAuth 2.0. - kliendi mandaatide. Kasutatakse rakenduse juurdepÀÀsuks API-le. See vÔib olla kasulik nÀiteks siis, kui rakendus soovib vÀrskendada oma registreerimise teavet teenuses vÔi URI suunamisteavet, vÔi juurdepÀÀsu muudele teabele, mis on rakenduse kontol teenuses API kaudu talletatud.
scope â see on valikuline parameeter. See mÀÀratleb nĂ€htavuse. Serveri tagastatud ligipÀÀsu token annab ligipÀÀsu ainult nendele teenustele, mis kuuluvad sellesse valdkonda. St saame mitu teenust ĂŒhendada ĂŒhe ulatuse alla ja kui klient saab ligipÀÀsuvĂ”tme sellele ulatusele, saadakse ligipÀÀs kĂ”igile nendele teenustele. Samuti vĂ”ib ulatus olla kasutatud autoriseerimisĂ”iguste piiramiseks (nĂ€iteks lugemis- vĂ”i kirjutamisĂ”igus)
Allikas: habr.com
