Kisimbuzi cha JWT
Bandika JSON Web Token na usome kichwa na payload yake kama JSON iliyopangwa, huku nyakati za kuisha muda na za kutolewa zikionyeshwa kama tarehe, pamoja na maelezo kama tokeni ni halali kwa sasa. Usimbuaji wote hufanyika ndani ya kivinjari chako, jambo muhimu tokeni inapokuwa kitambulisho kinachotumika.
Herufi 0 · maneno 0 · mistari 0
Herufi 0 · maneno 0 · mistari 0
Inafanya kazi kabisa ndani ya kichupo hiki cha kivinjari. Maandishi yako hayapakiwi wala kuhifadhiwa.
Madai yaliyosajiliwa
Majina saba ya madai yaliyofafanuliwa katika RFC 7519 §4.1. Yote ni hiari; nyakati ni sekunde tangu 1970-01-01 UTC.
| Dai | Maana |
|---|---|
iss | Mtoaji: aliyeunda na kusaini tokeni |
sub | Mhusika: mtumiaji au kiumbe ambaye tokeni inamhusu |
aud | Hadhira: tokeni inamlenga nani |
exp | Muda wa kuisha: kataa tokeni baada ya wakati huu |
nbf | Si kabla ya: kataa tokeni kabla ya wakati huu |
iat | Ilitolewa: tokeni ilipoundwa |
jti | Kitambulisho cha JWT: kitambulisho cha kipekee, hutumika kuzuia kurudiwa |
Thamani za kawaida za alg
| Thamani ya alg | Maana |
|---|---|
HS256 | HMAC na SHA-256; siri moja ya pamoja husaini na kuthibitisha |
RS256 | Saini ya RSA PKCS#1 v1.5 na SHA-256; ufunguo wa faragha husaini, wa umma huthibitisha |
PS256 | RSA-PSS na SHA-256 |
ES256 | ECDSA kwenye mkunjo wa P-256 na SHA-256; saini fupi |
EdDSA | Saini za Ed25519 au Ed448 |
none | Tokeni isiyosainiwa; seva zinapaswa kuikataa |
Ndani ya JSON Web Token
JWT imefafanuliwa katika RFC 7519 (Mei 2015), ambayo inapendekeza itamkwe kama neno la Kiingereza "jot". Muundo wa kawaida uliosainiwa ni mfuatano wa Base64url tatu zilizounganishwa kwa nukta: header.payload.signature. Header hutaja algoriti ya kusaini katika alg, kama HS256 au RS256, na mara nyingi kitambulisho cha ufunguo katika kid. Payload hubeba claims, yaani sehemu za JSON kama sub (mtumiaji), iss (mtoaji), aud (hadhira inayokusudiwa) na exp, nbf na iat, ambazo ni nyakati kwa sekunde tangu 1 Januari 1970 UTC. Kisimbuaji hubadilisha hizo tatu kuwa saa ya eneo lako na ISO 8601, na hukuambia kama tokeni imeisha muda, bado haijaanza kutumika, au iko ndani ya kipindi chake.
Base64url ni usimbaji, si usimbaji fiche, kwa hivyo yeyote mwenye tokeni anaweza kusoma payload yake kama inavyofanya ukurasa huu. Kamwe usiweke nenosiri, namba za kadi au siri nyingine kwenye claims. Tokeni yenye sehemu tano zilizotenganishwa kwa nukta ni JWE, tokeni iliyosimbwa fiche; yaliyomo hayawezi kusomwa bila ufunguo, na kisimbuaji hukueleza hivyo. "Bearer " ya mwanzoni iliyonakiliwa kutoka kwenye kichwa cha Authorization huondolewa kiotomatiki.
Kwa nini saini haithibitishwi hapa
Sahihi huthibitisha kwamba header na payload zilitengenezwa na mwenye ufunguo na hazijabadilishwa tangu hapo. Kuikagua kunahitaji ufunguo huo: siri ya pamoja kwa algoriti za HMAC kama HS256, au ufunguo wa umma wa mtoaji kwa RS256, ES256 au EdDSA. Kubandika siri ya kusaini ya uzalishaji kwenye ukurasa wowote wa wavuti si wazo zuri, na kisimbuaji kinachojifanya kuthibitisha tokeni bila ufunguo kingetoa faraja ya uongo, kwa hiyo zana hii huonyesha sahihi lakini haithibitishi. Chukulia unachokiona kama dai linalotolewa na tokeni, si ukweli.
Uthibitishaji unapaswa kufanyika kwenye seva yako, kwa maktaba inayotunzwa na algoriti inayotarajiwa ikiwa imefungwa. Makosa mawili ya kihistoria yanaeleza sababu: kukubali alg "none", jambo linalomruhusu yeyote kughushi tokeni isiyosainiwa, na mkanganyiko wa algoriti, ambapo seva inayotarajia RS256 hudanganywa ikague sahihi ya HS256 kwa kutumia ufunguo wa umma kama siri ya HMAC. Kisimbuaji ni cha kutafuta hitilafu: kuona ni claims zipi mtoaji hutoa, kugundua hadhira isiyo sahihi, au kujua kwamba kikao kilishindwa kwa sababu exp ilipita dakika moja iliyopita. Ili kusoma sehemu za Base64url ghafi, tumia kisimbuaji cha Base64.
Maswali yanayoulizwa mara kwa mara
- Je, ni salama kubandika tokeni halisi ya ufikiaji kwenye kisimbuzi cha JWT?
- Kwenye ukurasa huu tokeni haitoki kwenye kivinjari chako. Hata hivyo, tokeni halali hufanya kazi kama nenosiri hadi iishe muda, kwa hiyo pendelea tokeni zilizoisha muda au za majaribio, na usiweke za moja kwa moja kwenye picha za skrini wala mazungumzo.
- Kwa nini tokeni yangu inaonyesha imeisha muda ilhali imetolewa sasa hivi?
- Kagua kwanza saa ya kifaa chako. Watoaji wengine hupa tokeni za ufikiaji muda wa dakika chache tu, na tokeni iliyonakiliwa kutoka kwenye kumbukumbu inaweza kuwa ya zamani kuliko inavyoonekana. exp iliyoandikwa kwa milisekunde badala ya sekunde hufanya kinyume na kufikia maelfu ya miaka mbele.
- Je, mtu anaweza kubadilisha payload ya JWT yangu?
- Wanaweza kuihariri na kuisimba upya, lakini sahihi haitalingana tena. Seva inayothibitisha sahihi kwa ufunguo na algoriti sahihi itakataa tokeni iliyobadilishwa.
- Kuna tofauti gani kati ya JWS na JWE?
- JWS (RFC 7515) imesainiwa, ina sehemu tatu na yeyote anaweza kuisoma. JWE (RFC 7516) imesimbwa fiche, ina sehemu tano na mwenye ufunguo pekee anaweza kusoma payload.
- Je, kutoka kwenye akaunti kunabatilisha JWT?
- Si yenyewe. JWT iliyosainiwa hubaki halali hadi exp isipokuwa seva iwe na orodha ya kukataa au ikague rekodi ya kikao, ndiyo maana tokeni za ufikiaji kwa kawaida hupewa muda mfupi.