Selle postitusega soovin alustada artiklite seeriat, mis on pĂŒhendatud IdentityServer4-le. Alustame pĂ”himĂ”istetest.
Praegu on kĂ”ige lootustandvam autentimise protokoll , samas kui volituste (juurdepÀÀsu) protokoll on . rakendab neid kahte protokolli. See on optimeeritud lahendama tĂŒĂŒpilisi probleeme turvalisuse.
â see on autentimise protokoll ja standard, mis ei anna juurdepÀÀsu ressurssidele (Web API), kuid kuna see on vĂ€lja töötatud volituste protokolli peale, kuid see vĂ”imaldab saada kasutaja profiilivÀÀrtusi just nagu oleksite saanud juurdepÀÀsu ressurssidele .
(JSON Web Token) on veebistandard, mis mÀÀratleb viisi, kuidas edastada kasutajaandmeid JSON-formaadis krĂŒpteeritud kujul.
â see on volituste protokoll ja standard. See vĂ”imaldab rakendustel pÀÀseda ligi kaitstud ressurssidele, nĂ€iteks Web API-le.
Vaadakem diagrammi kaitstud ressursi juurde pÀÀsemisest ja uurime pÔhietappe ja kasutatavat terminoloogiat:

Kliendi nĂ”uab kasutajalt luba autoriseerimiseks tema nimel. Klient â on kliendi rakendus, mis pöördub turvalistele ressurssidele nende omaniku nimel. Ressurss â need on kĂ”ik meie kaitstud teenused .
Kasutaja lubab kliendi rakendusel autoriseerida end tema nimel, nĂ€iteks sisestades kasutajanime ja parooli. Need, kasutajanimi ja parool, toimivad kliendi rakenduse autoriseerimise volitusena. Kasutaja (ressursi omanik) â programm vĂ”i inimene, kes saab anda juurdepÀÀsu kaitstud ressurssidele, nĂ€iteks kasutajanime (username) ja parooli (password) sisestamise kaudu;
Kliendi rakendus kĂŒsib juurdepÀÀsutĂŒkki
IdentityServer4enne, kui esitavad teavet enda kohta (client_id,client_secret), andes kasutaja autoriseerimiseks loa (username,password) ning esitadesgrant_typejascope. SeejÀrel kontrollib autoriseerimiserver kliendi ja ressursi omaniku (kasutajanime ja parooli) autentimise.OAuth 2.0 protokoll autentib mitte ainult kasutajat, vaid ka kliendi rakendust, mis pÀÀseb ressurssidele juurde. Selleks sisaldab protokoll selliseid parameetreid nagu client_id ja client_secret.
client_id â see on kliendi rakenduse identifikaator, mida kasutatakseIdentityServer4kliendi teabe otsimiseks.
client_secret on simuleerib kliendi rakenduse parooli ja seda kasutatakse kliendi rakenduse autentimiseksIdentityServer4. Kliendi saladus peaks olema tuntud ainult rakendusele ja API-le. Seega jÀreldame, et IdentityServer4 peab teadma oma kliente.Kui rakenduse autentsus on kinnitatud ja autoriseerimise luba on kehtiv,
IdentityServer4loomiseaccess-tokeni(juurdepÀÀsutoken) rakenduse jaoks ja valikulise vÀrskenduse vÔtme (refresh-token). Autoriseerimisprotsess on lÔpetatud. Kui pÀring on ebaÔiglane vÔi volitamata, tagastab autoriseerimisteenuse server vastava veakoodi.Kliendi rakendus vÔtab kaitstud veeb API-lt andmeid, esitades samal ajal juurdepÀÀsutokeni autoriseerimiseks. Kui serveri ressursi vastuse kood , vÔi , siis on autentimiseks kasutatav juurdepÀÀsutoken kehtetu vÔi aegunud.
Kui token on kehtiv,
Web APIedastab andmed rakendusele.
Tokeni tĂŒĂŒbid
registreeritud IdentityServer4 klientidele on lubatud kĂŒsida IdentityServer4 identity-token, access-token ja refresh-token.
- identity-token (tuvastustoken) â autentimise protsessi tulemus. Sisaldab kasutaja tuvastajat ja teavet selle kohta, kuidas ja millal kasutaja autentimist sooritab. Saate seda oma andmetega laiendada.
- access-token (juurdepÀÀsutoken) â edastatakse kaitstud API-le ning seda kasutatakse autoriseerimiseks (juurdepÀÀsu lubamiseks) oma andmetele.
- refresh-token (uuendustoken) â valikuline parameeter, mille autoriseerimiserver vĂ”ib tagasi saata juurdepÀÀsutokeni pĂ€ringu vastusena.
Lisame veel kaks mÔistet:
Authenticattion Server Url â lĂ”pp-punkt juurdepÀÀsuvĂ”tme saamiseks. KĂ”ik pĂ€ringud juurdepÀÀsuvĂ”tmete andmiseks ja taaskĂ€ivitamiseks suunatakse sellele URL-ile.
Resource Url â kaitstud ressursi URL, millele tuleb pöörduda, et sellele juurde pÀÀseda, edastades sellele juurdepÀÀsuvĂ”tme autoriseerimise pĂ€ises.
JuurdepÀÀsuvÔtme pÀrimine
JuurdepÀÀ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, password, client_id ja client_secret olidud on juba analĂŒĂŒsitud. Vaatame ĂŒle ĂŒlejÀÀnud parameetrid:
grant_type â grant tĂŒĂŒpi vĂ”i volituse tĂŒĂŒpi. Volituse tĂŒĂŒp sĂ”ltub rakenduses kasutatavast volituste pĂ€ringust ja milliseid volituse tĂŒĂŒpe API toetab. Meie juhul on see password, mis vastab spetsifikatsioonile OAuth 2.0 tööst, mis vastab ressurssi omaniku juurdepÀÀsu volituskohtadele (autentimine kasutajanime ja parooli abil).
Protokoll OAuth 2.0 mÀÀratleb jÀrgmised volitused, mis nÔuavad kohustuslikku kasutajate interaktsiooni:
- autentimiskood (authorization code). See on ĂŒks levinumaid volituse tĂŒĂŒpe, kuna see sobib hĂ€sti serveripoolsetele rakendustele (server-side applications), kus rakenduse lĂ€htekood ja kliendi saladus ei ole kolmandate isikute jaoks ligipÀÀsetavad;
- kaudne (implicit). Kaudset autentimise volitust kasutatakse mobiil- ja veebirakendustes, kus kliendi saladuse konfidentsiaalsust ei saa tagada;
Ja volituse tĂŒĂŒbid, mis vĂ”ivad toimida ilma kohustuslikku kasutajate interaktsioonita:
- ressursi omaniku andmed. Seda tĂŒĂŒpi volitusi tuleks kasutada ainult siis, kui kliendi rakendus naudib kasutaja usaldust ja kasutaja on rahul oma kasutajanime ja parooli sisestamisega. Seda tĂŒĂŒpi volitusi tuleks kasutada ainult siis, kui teised valikud pole saadaval. See tĂŒĂŒp volitusi on mugav ettevĂ”tte klientidele, kes on oma sĂŒsteemis juba kasutanud kasutaja volitusi ja soovivad ĂŒle minna
OAuth 2.0. - kliendi volitustele. Neid 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 suunamiste URI-d, vÔi juurdepÀÀsuks muudele andmetele, mis on rakenduse kontol teenuses, teenuse API kaudu.
scope â see on valikuline parameeter. See mÀÀrab ulatuse. Serveri tagastatud juurdepÀÀsu token vĂ”imaldab juurdepÀÀsu ainult neile teenustele, mis kuuluvad sellesse ulatusse. St. me saame mitu teenust kokku koondada ĂŒhe ulatuse alla ja kui klient saab juurdepÀÀsu vĂ”tme sellele ulatusele, saab ta juurdepÀÀsu kĂ”igile neile teenustele. Ulatust saab kasutada ka autoriseerimisĂ”iguste piiramiseks (nĂ€iteks lugemis- vĂ”i kirjutamisĂ”igused).
Allikas: habr.com
