IdentityServer4. Echiche ndị bụ isi. Jikọọ OpenID, OAuth 2.0 na JWT

Site na post a, achọrọ m imepe eri nke akụkọ raara nye IdentityServer4. Ka anyị malite na echiche ndị bụ isi.

Protocol nyocha kacha ewu ewu n'oge a bụ OpenID Jikọọ, na protocol ikike (na-enye ohere) bụ OAuth 2.0. IdentityServer4 na-eme ihe abụọ a protocol. A na-ahazi ya iji dozie ya ahụkarị nsogbu nchekwa.

OpenID Jikọọ bụ protocol na ọkọlọtọ, ọ naghị enye ohere ịnweta akụrụngwa (Web API), mana ebe ọ bụ na emebere ya n'elu usoro ikike ikike OAuth 2.0, ọ na-enye gị ohere ịnweta paramita profaịlụ onye ọrụ dị ka a ga-asị na ị nwere ike ịnweta akụrụngwa Ozi onye ọrụ.

J.W.T. (JSON Web Token) bụ ọkọlọtọ webụ na-akọwa ụzọ isi nyefee data onye ọrụ n'ụdị JSON n'ụdị ezoro ezo.

OAuth 2.0 (RFC 6749) bụ ụkpụrụ na ọkọlọtọ ikike. Ọ na-enye ngwa ohere ịnweta akụrụngwa echedoro, dịka API Weebụ.

Ka anyị leba anya na eserese nke ịnweta akụrụngwa echedoro wee ghọta usoro isi na okwu okwu anabatara:

IdentityServer4. Echiche ndị bụ isi. Jikọọ OpenID, OAuth 2.0 na JWT

  1. Onye ahịa ahụ na-arịọ ikike n'aka onye ọrụ iji nyochaa aha ya. Ahịa bụ ngwa ahịa nke na-enweta akụrụngwa echekwara n'aha onye nwe akụrụngwa. resource - Ndị a bụ ọrụ echedoro anyị API weebụ.

  2. Onye ọrụ na-enye ohere ka ngwa ahịa nyochaa n'aha ya, dịka ọmụmaatụ, site na itinye nbanye na paswọọdụ. Nbanye na paswọọdụ ga-abụ onyinye ikike maka ngwa onye ahịa. Onye ọrụ (onye nwe akụrụngwa) - mmemme ma ọ bụ onye nwere ike inye ohere ịnweta akụrụngwa echekwara, dịka ọmụmaatụ, site na itinye nbanye (aha njirimara) na paswọọdụ (paswọdu);

  3. Ngwa ndị ahịa na-arịọ akara ohere site na IdentityServer4 site n'inye ozi gbasara onwe gị (client_id, client_secret), inye ikike n'aka onye ọrụ (username, password) na inye grant_type и scope. Mgbe ahụ, ihe nkesa ikike na-enyocha izi ezi nke onye ahịa na nkọwa nke onye nwe ihe onwunwe (nbanye na paswọọdụ).

    OAuth 2.0 protocol na-akwado ọ bụghị naanị onye ọrụ, kamakwa ngwa ndị ahịa na-enweta akụrụngwa. Maka nzube a, protocol na-enye parampat dị ka ahịa_id и ahịa_secret.
    client_id bụ njirimara ngwa ahịa ejiri IdentityServer4 ka ịchọọ ozi gbasara onye ahịa.
    ahịa_secret dị ka okwuntughe maka ngwa ndị ahịa ma ejiri ya chọpụta ngwa ndị ahịa na ya IdentityServer4. Naanị ngwa na API kwesịrị ịma ihe nzuzo onye ahịa. Dabere na nke dị n'elu, anyị kwubiri na IdentityServer4 kwesịrị ịma gbasara ndị ahịa ya.

  4. Ọ bụrụ na akwadoro ngwa a yana ikike ikike dị irè, IdentiryServer4 na-emepụta access-токен (token nweta) maka ngwa na igodo ume ọhụrụ nhọrọ (refresh-токен). Emechara usoro ikike. Ọ bụrụ na arịrịọ ahụ ezighi ezi ma ọ bụ enweghị ikike, ihe nkesa ikike weghachi koodu nwere ozi mperi dabara adaba.

  5. Ngwa ndị ahịa na-enweta API Weebụ echekwara maka data, na-enye akara ohere maka ikike. Ọ bụrụ koodu nzaghachi ihe nkesa akụrụngwa 401, 403 ma ọ bụ 498, mgbe ahụ akara ohere ejiri maka nyocha abaghị uru ma ọ bụ kubie ume.

  6. Ọ bụrụ na akara ahụ dị irè, Web API na-enye data na ngwa.

Ụdị akara ngosi

Edebara aha na IdentityServer4 A na-ahapụ ndị ahịa ka ha rịọ IdentityServer4 identity- akara, access-token na refresh-token.

  • akara njirimara (ihe njirimara) - nsonaazụ nke usoro nyocha. Nwere NJ onye ọrụ yana ozi gbasara otu na mgbe enwetara onye ọrụ. Ị nwere ike iji data nke gị gbasaa ya.
  • ohere ohere — bufee ya na API echedoro ma jiri ya nye ikike (ikike ịnweta) na data ya.
  • akara ume ọhụrụ (ihe ngosi ume ọhụrụ) bụ oke nhọrọ nke ihe nkesa ikike nwere ike ịlaghachi na nzaghachi nye arịrịọ akara ohere.

Ka anyị webata echiche abụọ ọzọ:

Url sava nyocha - njedebe maka ịnweta igodo nnweta. Anyị ga-eduzi arịrịọ niile maka inye na mweghachi nke igodo nnweta na URL a.

Ihe enyemaka URL - URL nke akụ echekwara nke a ga-akpọtụrụ iji nweta ya, na-ebufe ya igodo ohere na nkụnye ikike ikike.

Arịrịọ igodo nweta

Iji rịọ igodo nnweta, onye ahịa na-eme ya POST arịrịọ ka njedebe IdentityServer4 ya na isiokwu na-esonụ

'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'

na ịgafe paramita ndị a:

'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'

username, password, client_id и client_secret a tụlere n'elu. Ka anyị lelee paramita ndị fọdụrụ:

Grant_type - ụdị onyinye ma ọ bụ ụdị ikike. Ụdị ikike ikike dabere na usoro arịrịọ ikike ngwa ahụ na-eji, yana ụdị ikike API na-akwado. N'ọnọdụ anyị ọ ga-adị mkpa password, nke dị ka nkọwapụta OAuth 2.0 kwekọrọ na onyinye nke ohere nkọwa nke onye nwe akụrụngwa (ikike site na nbanye na paswọọdụ).

Protocol OAuth 2.0 na-akọwa ụdị enyemaka ndị a chọrọ mmekọrita iwunyere ndị ọrụ:

  • koodu ikike. Ọ bụ otu n'ime ụdị ikike ikike a na-ahụkarị, n'ihi na. dabara nke ọma maka ngwa n'akụkụ ihe nkesa, ebe koodu isi mmalite na nzuzo ndị ahịa anaghị enweta ndị mbịarambịa;
  • nke doro anya. A na-eji ụdị ikike ikike ezoro ezo site na mkpanaka na ngwa webụ ebe enweghị ike ịkwenye nzuzo nzuzo nke onye ahịa;

Na ụdị onyinye na enwere ike igbu ya na-enweghị mmekọrịta onye ọrụ:

  • nkọwa onye nwe akụ. Ekwesịrị iji ụdị ikike a naanị ma ọ bụrụ na onye ọrụ tụkwasịrị obi ngwa onye ahịa yana ahụ iru ya ala na itinye nbanye na paswọọdụ ya. Ekwesịrị iji ụdị ikike a naanị mgbe enweghị nhọrọ ọzọ dị. Ụdị ikike a dị mma maka ndị ahịa ụlọ ọrụ bụ ndị ejirila nzere onye ọrụ n'ime sistemụ ha ma chọọ ịgbanwe gaa na. OAuth 2.0.
  • nzere ndị ahịa. A na-eji ya mgbe ngwa ahụ nwetara API. Nke a nwere ike ịba uru, dịka ọmụmaatụ, mgbe ngwa chọrọ imelite ozi ndebanye aha ọrụ nke ya ma ọ bụ redirect URI, ma ọ bụ nweta ozi ndị ọzọ echekwara na akaụntụ ọrụ ngwa site na API ọrụ.

oghere - Nke a bụ oke nhọrọ. Ọ na-akọwa oke. Token ohere nke sava weghachiri ga-enye naanị ohere ịnweta ọrụ ndị dabara n'ime oke ahụ. Ndị ahụ. anyị nwere ike ijikọ ọtụtụ ọrụ n'okpuru otu mpaghara ma ọ bụrụ na onye ahịa ahụ enweta igodo ohere na mpaghara a, ọ ga-enweta ọrụ ndị a niile. Enwere ike iji oke machita ikike ikike (dịka ọmụmaatụ, ịnweta ọgụgụ ma ọ bụ dee)

isi: www.habr.com

Zụta nnabata ntụkwasị obi maka saịtị nwere nchekwa DDoS, sava VPS VDS 🔥 Zụta ebe nrụọrụ weebụ a pụrụ ịtụkwasị obi na nchekwa DDoS, sava VPS VDS | ProHoster