UUSI: saada JWT Käsikirja ilmaiseksi ja oppia JWTs perusteellisesti!
mikä on JSON Web Token?
JSON Web Token (JWT) on avoin standardi (RFC 7519), joka määrittelee kompakti ja itsenäinen tapa turvallisesti lähettää tietoja sopimuspuolten välillä, kuten JSON-objekti. Tämä tieto voidaan todentaa ja luottaa, koska se on digitaalisesti allekirjoitettu. JWTs voidaan allekirjoittaa salaisella (HMAC-algoritmilla) tai julkisen/yksityisen avaimen parilla RSA: n tai ECDSA: n avulla.,
vaikka JWTs voidaan salata myös salassapitovelvollisuuden tarjoamiseksi osapuolten välillä, keskitymme allekirjoitettuihin poletteihin. Allekirjoitetut poletit voivat varmistaa sen sisältämien väitteiden eheyden, kun taas salatut poletit piilottavat nämä väitteet muilta osapuolilta. Kun kuponkia allekirjoitetaan julkisen/yksityisen avaimen pareilla, allekirjoituksessa todistetaan myös, että vain yksityisen avaimen haltija on allekirjoittanut sen.
milloin kannattaa käyttää JSON Web-rahakkeita?
Tässä muutamia tilanteita, joissa JSON Web Rahakkeita ovat hyödyllisiä:
-
Lupaa: Tämä on yleisin skenaario käyttäen JWT., Kun käyttäjä on kirjautunut sisään, jokainen seuraava pyyntö sisältää JWT, jonka avulla käyttäjä voi kulkureitit, palvelut ja resurssit, jotka ovat sallittua kanssa, että token. Single Sign-on ominaisuus, joka laajasti käyttää JWT nykyään, koska sen pieni yläpuolella, ja sen kyky olla helposti käyttää eri aloilla.
-
tietojenvaihto: JSON Web-poletit ovat hyvä tapa välittää tietoa turvallisesti osapuolten välillä. Koska JWTs voidaan allekirjoittaa-esimerkiksi käyttämällä julkisia / yksityisiä avainpareja-voit olla varma, että lähettäjät ovat keitä he sanovat olevansa., Lisäksi, koska allekirjoitus lasketaan käyttämällä otsikkoa ja hyötykuormaa, voit myös tarkistaa, että sisältöä ei ole peukaloitu.
Mikä on JSON Web Token rakenne?
sen kompakti muoto, JSON Web-Kuponkia koostuu kolmesta osasta, jotka on erotettu pisteillä (.
), jotka ovat:
- Otsikko
- Lasti
- Allekirjoitus
näin Ollen, JWT yleensä näyttää seuraavat.
xxxxx.yyyyy.zzzzz
katsotaanpa murtaa eri osat.,
Otsikko
header koostuu tyypillisesti kahdesta osasta: tyypin tunnuksen, joka on JWT, ja allekirjoittamisesta algoritmia käytetään, kuten HMAC-SHA256-tai RSA.
esimerkiksi:
{ "alg": "HS256", "typ": "JWT"}
Niin, tämä JSON on Base64Url-koodattu lomakkeen ensimmäinen osa JWT.
hyötykuorma
Tokenin toinen osa on hyötykuorma, joka sisältää korvausvaatimukset. Väitteet ovat lausumia kokonaisuudesta (tyypillisesti käyttäjästä) ja lisätiedoista.Korvausvaatimuksia on kolmenlaisia: rekisteröityjä, julkisia ja yksityisiä korvausvaatimuksia.,
-
rekisteröidyt saatavat: nämä ovat joukko ennalta määritettyjä saatavia, jotka eivät ole pakollisia mutta suositeltavia, jotta saadaan joukko hyödyllisiä, yhteentoimivia saatavia. Jotkut niistä ovat: iss (liikkeeseenlaskija), exp (vanhenemisaika), sub (kohde), aud (yleisö), ja toiset.
Huomaa, että väite nimet ovat vain kolme merkkiä pitkä kuin JWT on tarkoitus olla kompakti.
-
Julkiset väitteet: Nämä voidaan määritellä mieleisekseen niille, jotka käyttävät JWTs., Yhteentörmäysten välttämiseksi ne olisi kuitenkin määriteltävä IANA JSON Web Token-rekisterissä tai määriteltävä URI: ksi, joka sisältää törmäyskestävän nimiavaruuden.
-
Yksityinen väittää: Nämä ovat custom väitteitä luotu jakaa tietoa osapuolten välillä samaa mieltä siitä, että käyttää niitä ja eivät ole rekisteröity tai julkista väittää.
esimerkki hyötykuorma voisi olla:
{ "sub": "1234567890", "name": "John Doe", "admin": true}
hyötykuorma on sitten Base64Url-koodattu lomakkeen toinen osa JSON Web Token.,
huomaa, että allekirjoitettu kuponkia tätä tietoa, vaikka suojattu peukaloinnin, on luettavissa kuka tahansa. Älä laita salaista tietoa JWT: n hyötykuormaan tai otsikkoelementteihin, ellei se ole salattu.
Allekirjoitus
jos Haluat luoda allekirjoituksen osa sinun täytyy ottaa koodattu otsikon, koodattu hyötykuorma, salainen algoritmi määritelty header, ja merkki siitä, että.,
esimerkiksi, jos haluat käyttää HMAC-SHA256-algoritmi, allekirjoitus luodaan seuraavasti:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
allekirjoitus on käyttää vahvistamaan, että viesti ei ole muuttunut matkan varrella, ja jos kuponkia allekirjoitettu yksityisellä avaimella, se voi myös tarkistaa, että lähettäjän JWT on se, kuka sanoo, että se on.
Putting kaikki yhdessä
lähtö on kolme Base64-URL jouset erotettu pisteitä, jotka voidaan helposti siirtää HTML ja HTTP-ympäristöissä, mutta on kompaktimpi verrattuna XML-pohjaisiin standardeihin, kuten SAML.,
seuraavassa näkyy JWT, johon on koodattu edellinen otsikko ja hyötykuorma, ja se on allekirjoitettu salaisuudella.
Jos haluat pelata JWT ja laittaa nämä käsitteet käytäntöön, voit käyttää jwt.io Debuggeri purkaa, tarkistaa ja tuottaa JWTs.
Miten JSON Web-Kuponkia työtä?
– todennusta, kun käyttäjä onnistuneesti kirjautuu sisään käyttäen heidän valtakirjansa, JSON Web Token palautetaan. Koska rahakkeet ovat valtakirjoja, turvallisuuskysymysten ehkäisemiseksi on pidettävä suurta huolta., Yleensä, sinun ei pitäisi pitää kuponkia pidempään kuin tarvitaan.
arkaluontoisia istuntotietoja ei myöskään kannata tallentaa selaimen tallennustilaan tietoturvan puutteen vuoksi.
Aina kun käyttäjä haluaa käyttää suojattua reittiä tai resurssi, käyttäjä agentti pitäisi lähettää JWT, tyypillisesti Authorization-header käyttäen Siirtotie skeema. Sisältö otsikon pitäisi näyttää seuraavat:
Authorization: Bearer <token>
Tämä voi olla tietyissä tapauksissa, kansalaisuudeton lupaa mekanismi., Palvelin on suojattu reitit tulee tarkistaa voimassa JWT Authorization
header, ja jos se on läsnä, käyttäjä saa käyttää suojattuja resursseja. Jos JWT sisältää tarvittavat tiedot, tarve tiedustella tietokannasta tiettyjä toimintoja varten voi vähentyä, vaikka näin ei välttämättä aina ole.
Jos merkki on lähetetty Authorization
header, Cross-Origin Resource Sharing (CORS) ei ole ongelma, koska se ei käytä evästeitä.,
seuraava kaavio osoittaa, miten JWT: tä on saatu ja käyttää APIs tai resurssit:
- sovelluksen tai asiakas pyytää lupa lupa-palvelin. Tämä suoritetaan yhden eri valtuutusvirran kautta. Esimerkiksi tyypillinen OpenID Connect-yhteensopiva web-sovellus menee läpi
/oauth/authorize
endpoint käyttää valtuutuskoodi virtaus. - kun valtuutus myönnetään, valtuutustietopalvelin palauttaa käyttöoikeustunnuksen sovellukseen.,
- sovellus käyttää access tokenia suojatun resurssin (kuten API: n) käyttämiseen.
huomaa, että allekirjoitettu kuponkia, kaikki tiedot sisältyvät token on alttiina käyttäjille tai muille osapuolille, vaikka ne eivät voi muuttaa sitä. Tämä tarkoittaa, että sinun ei pitäisi laittaa salaista tietoa token.
Miksi meidän pitäisi käyttää JSON Web-rahakkeita?
puhutaan JSON Web-rahakkeiden (JWT) hyödyistä verrattuna yksinkertaisiin Web-rahakkeisiin (SWT) ja Tietoturvamerkintöihin (SAML).,
koska JSON on XML: ää vähemmän verbaalinen, kun se koodataan sen koko on myös pienempi, mikä tekee JWT: stä SAML: ää kompaktimpi. Tämä tekee JWT: stä hyvän valinnan siirrettäväksi HTML-ja HTTP-ympäristöissä.
turvallisuusnäkökulmasta SWT voidaan allekirjoittaa symmetrisesti vain jaetulla salaisuudella käyttäen HMAC-algoritmia. JWT ja SAML poletit voivat kuitenkin käyttää julkista/yksityistä avainparia X. 509-sertifikaatin muodossa allekirjoittamiseen. XML: n allekirjoittaminen XML-digitaalisella allekirjoituksella ilman hämärien tietoturva-aukkojen käyttöönottoa on erittäin vaikeaa verrattuna JSON-allekirjoituksen yksinkertaisuuteen.,
JSON parsers on yleinen useimmissa ohjelmointikielissä, koska ne kartoittavat suoraan esineisiin. Käänteisesti, XML ei ole luonnollinen dokumentti-to-object kartoitus. Tämä tekee JWT: n kanssa työskentelystä helpompaa kuin SAML assertions.
käytön osalta JWT: tä käytetään Internetin mittakaavassa. Tämä korostaa JSON Web Tokenin asiakaspuolen käsittelyn helppoutta useilla alustoilla, erityisesti mobiilissa.,
Vertailu pituus koodattu JWT ja koodattu SAML
Jos haluat lukea lisää siitä, JSON Web-Tunnuksineen ja jopa alkaa käyttää niitä suorittaa todennuksen omia sovelluksia, selaa JSON Web Token aloitussivun klo Auth0.
Leave a Reply