IdentityServer4. Peamised mÔisted. OpenID Connect, OAuth 2.0 ja JWT

Selle postitusega soovin alustada artiklite seeriat, mis on pĂŒhendatud IdentityServer4-le. Alustame peamistest mĂ”istetest.

Praegu on kĂ”ige perspektiivikam autentimisprotokoll OpenID Connect, autoriseerimise (juurdepÀÀsu andmise) protokoll on OAuth 2.0. IdentityServer4 , 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

OpenID Connect , vĂ”imaldab see saada kasutaja profiili parameetreid, justkui oleksite saanud juurdepÀÀsu ressursile OAuth 2.0UserInfo (JSON Web Token) on veebistandard, mis mÀÀratleb viisi kasutajaandmete edastamiseks JSON-formaadis krĂŒpteeritud kujul..

JWT OAuth 2.0 (RFC 6749)

— see on autoriseerimisprotokoll ja standard. See vĂ”imaldab rakendustel pÀÀseda juurde kaitstud ressurssidele, nĂ€iteks Web API-le. Vaadakem, kuidas kaitstud ressursse kutsuda, ja selgitage peamisi samme ja aktsepteeritud terminoloogiat:

Kliendi rakendus palub kasutajalt luba autoriseerimise lÀbiviimiseks tema nimel.

IdentityServer4. Peamised mÔisted. OpenID Connect, OAuth 2.0 ja JWT

  1. — 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. Veebi API.

  2. 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

  3. esitamata enda kohta teavet ( IdentityServer4 client_secretclient_id, ), kasutades kasutaja autoriseerimisluba () ja esitadesusername, paroolgrant_type . SeejÀrel kontrollib autoriseerimiserver kliendi ja ressursi omanikku (sisselogimine ja parool) autentimist. ja scopeOAuth 2.0 protokoll tÔendab mitte ainult kasutaja, vaid ka kliendirakenduse, mis pÀÀseb ressurssidele. Selleks on protokollis ette nÀhtud sellised parameetrid nagu

    client_id client_id ja ), kasutades kasutaja autoriseerimisluba (.
    — see on kliendirakenduse identifikaator, mida kasutatakse kliendi teabe otsimiseks. IdentityServer4 on kliendirakenduse parooli analoog ja seda kasutatakse kliendirakenduse autentimiseks.
    ), kasutades kasutaja autoriseerimisluba ( on kliendi rakenduse sarnane parool, mida kasutatakse kliendi rakenduse autentimiseks IdentityServer4. Kliendi saladus peab olema teada ainult rakendusele ja API-le. Ülaltoodust lĂ€htudes jĂ€reldame, et IdentityServer4 peab teadma oma kliente.

  4. Kui rakenduse ehtsust on kinnitatud ja autoriseerimise luba on kehtiv, IdentiryServer4 loob access-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.

  5. Kliendirakendus kĂŒsib andmeid kaitstud Web API-lt, esitades samas ligipÀÀsutokeni autoriseerimiseks. Kui serveri ressursside vastuskood 401, 403 vĂ”i 498, siis on autoriseerimiseks kasutatud ligipÀÀsutoken kehtetu vĂ”i aegunud.

  6. Kui token on kehtiv, Veebi API tagastab 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

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster