új: szerezd meg ingyen a JWT kézikönyvet, és tanuld meg alaposan a JWTs-t!
mi a JSON Web Token?
a JSON Web Token (JWT) egy nyílt szabvány (RFC 7519), amely egy kompakt és önálló módot határoz meg az információk biztonságos továbbítására a felek között JSON objektumként. Ez az információ ellenőrizhető és megbízható, mert digitálisan van aláírva. JWTs lehet aláírni egy titkos (a HMAC algoritmus), vagy egy nyilvános/privát kulcspár segítségével RSA vagy ECDSA.,
bár a JWTs titkosítható, hogy titkosságot biztosítson a felek között, az aláírt tokenekre összpontosítunk. Az aláírt tokenek ellenőrizhetik a benne található állítások integritását, míg a titkosított tokenek elrejtik ezeket az állításokat más felektől. Amikor a tokeneket nyilvános/privát kulcspárokkal írják alá, az aláírás azt is igazolja, hogy csak a privát kulcsot tartó fél írta alá.
mikor kell használni a JSON Web Tokeneket?
íme néhány forgatókönyv, ahol a JSON webes tokenek hasznosak:
-
Engedélyezés: ez a leggyakoribb forgatókönyv a JWT használatához., A felhasználó bejelentkezése után minden további kérés tartalmazza a JWT-t, amely lehetővé teszi a felhasználó számára, hogy hozzáférjen az adott tokennel engedélyezett útvonalakhoz, szolgáltatásokhoz és erőforrásokhoz. Single Sign On egy olyan funkció, amely széles körben használja JWT manapság, mert a kis rezsi, valamint a képesség, hogy könnyen használható különböző területeken.
-
információcsere: a JSON webes tokenek jó módja az információk biztonságos továbbításának a felek között. Mivel a JWTs aláírható—például nyilvános / privát kulcspárok használatával -, biztos lehet benne, hogy a feladók azok, akiknek mondják őket., Továbbá, mivel az aláírást a fejléc és a hasznos teher alapján számítják ki, ellenőrizheti, hogy a tartalmat nem manipulálták-e.
mi a JSON Web Token szerkezete?
kompakt formájában a JSON Web tokenek három részből állnak, amelyeket pontok választanak el egymástól (.
), amelyek a következők:
- Header
- Payload
- Signature
ezért a JWT általában a következőnek tűnik.
xxxxx.yyyyy.zzzzz
bontsuk le a különböző részeket.,
Header
a fejléc általában két részből áll: a token típusából, amely JWT, valamint a használt aláírási algoritmusból, például a HMAC SHA256 vagy az RSA.
például:
{ "alg": "HS256", "typ": "JWT"}
ezután Ez a JSON Base64Url kódolva van, hogy a JWT első részét képezze.
hasznos teher
a token második része a hasznos teher, amely tartalmazza a követeléseket. A követelések egy entitásra (jellemzően a felhasználóra) és további adatokra vonatkozó állítások.A követelések három típusa létezik: regisztrált, nyilvános és magánkövetelések.,
-
regisztrált követelések: ezek olyan előre meghatározott követelések halmaza, amelyek nem kötelezőek, de ajánlottak, hogy hasznos, interoperábilis állításokat biztosítsanak. Néhány közülük: iss (kibocsátó), exp (lejárati idő), sub (tárgy), aud (közönség), stb.
vegye figyelembe, hogy az állításnevek csak három karakter, amíg a JWT kompakt.
-
nyilvános állítások: ezeket a JWTs használatával tetszés szerint lehet meghatározni., De az ütközések elkerülése érdekében azokat az IANA JSON Web Token Registry-ben kell meghatározni, vagy olyan URI-ként kell meghatározni, amely ütközésálló névteret tartalmaz.
-
Privát állítja: Ezek az egyéni igények létre, hogy megosszák az információkat a felek között, hogy egyetértünk abban, használja őket, vagy sem regisztrált, vagy állami követelések.
egy példa hasznos lehet:
{ "sub": "1234567890", "name": "John Doe", "admin": true}
a hasznos teher ezután Base64Url kódolt alkotnak a második része a JSON Web Token.,
ne feledje, hogy az aláírt tokenek esetében ez az információ, bár védett a manipulálás ellen, bárki számára olvasható. Ne tegyen titkos információkat a JWT hasznos vagy fejléc elemeibe, kivéve, ha titkosítva van.
Signature
az aláírási rész létrehozásához meg kell venni a kódolt fejlécet, a kódolt hasznos adatot, egy titkot, a fejlécben megadott algoritmust, és ezt alá kell írni.,
például, ha a HMAC SHA256 algoritmust szeretné használni, az aláírás a következő módon jön létre:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
az aláírást arra használják, hogy ellenőrizze az üzenet nem változott az út mentén, és magánkulccsal aláírt tokenek esetében azt is ellenőrizheti, hogy a JWT küldője az, aki azt mondja.
hogy minden együtt
A kimenet három Base64-URL húrok pontokkal elválasztva, hogy könnyen át HTML, HTTP környezetben, miközben több kompakt képest XML-alapú szabványok, mint például SAML.,
az alábbi ábra egy JWT-t mutat, amely az előző fejlécet és hasznos adatot kódolja, és egy titokkal van aláírva.
jwt.io hibakereső dekódolni, ellenőrizni és generálni JWTs.
hogyan működnek a JSON Web tokenek?
a hitelesítés során, amikor a Felhasználó sikeresen bejelentkezik hitelesítő adataival, egy JSON Web Token kerül visszaadásra. Mivel a tokenek hitelesítő adatok, nagy figyelmet kell fordítani a biztonsági problémák megelőzésére., Általában nem szabad a tokeneket a szükségesnél hosszabb ideig tartani.
a biztonság hiánya miatt nem szabad érzékeny munkamenetadatokat tárolni a böngésző tárolójában.
amikor a felhasználó védett útvonalat vagy erőforrást szeretne elérni, a felhasználói ügynöknek el kell küldenie a JWT-t, általában az engedélyezési fejlécben a bemutatóra vonatkozó séma segítségével. A fejléc tartalmának a következőnek kell lennie:
Authorization: Bearer <token>
Ez bizonyos esetekben hontalan engedélyezési mechanizmus lehet., A szerver védett útvonalai a Authorization
fejlécben ellenőrzik az érvényes JWT-t, és ha jelen van, a felhasználó hozzáférhet a védett erőforrásokhoz. Ha a JWT tartalmazza a szükséges adatokat, az adatbázis lekérdezésének szükségessége bizonyos műveletekre csökkenthető, bár ez nem mindig lehetséges.
Ha a tokent aAuthorization
fejlécben küldi el, a cross-Origin Resource Sharing (CORS) nem jelent problémát, mivel nem használ cookie-kat.,
az alábbi ábra azt mutatja, hogy a JWT hogyan érhető el és használható API-k vagy erőforrások eléréséhez:
- az alkalmazás vagy az ügyfél engedélyt kér az engedélyezési kiszolgálóhoz. Ez a különböző engedélyezési folyamatok egyikén keresztül történik. Például egy tipikus OpenID Connect kompatibilis webes alkalmazás a
/oauth/authorize
végponton megy keresztül az engedélyezési kódfolyam segítségével. - az engedély megadásakor az engedélyező kiszolgáló hozzáférési tokent ad vissza az alkalmazáshoz.,
- az alkalmazás a hozzáférési tokent használja egy védett erőforrás eléréséhez (például egy API-hoz).
ne feledje, hogy aláírt tokenekkel a tokenben található összes információ Ki van téve a felhasználóknak vagy más feleknek, annak ellenére, hogy nem tudják megváltoztatni. Ez azt jelenti, hogy ne tegyen titkos információkat a tokenbe.
miért használjuk a JSON Web Tokeneket?
beszéljünk a JSON Web tokenek (JWT) előnyeiről, összehasonlítva az egyszerű webes tokenekkel (SWT) és a biztonsági állítás Jelölőnyelvi tokenekkel (SAML).,
mivel a JSON kevésbé bőbeszédű, mint az XML, amikor kódolva van, a mérete is kisebb, így a JWT kompaktabb, mint a SAML. Ez teszi JWT egy jó választás, hogy át kell adni a HTML, HTTP környezetben.
biztonsági szempontból az SWT csak szimmetrikusan írható alá egy megosztott titok a HMAC algoritmus segítségével. A JWT és a SAML tokenek azonban használhatnak egy nyilvános/privát kulcspárt X. 509 tanúsítvány formájában az aláíráshoz. Az XML aláírása az XML digitális aláírással a homályos biztonsági lyukak bevezetése nélkül nagyon nehéz, összehasonlítva a JSON aláírásának egyszerűségével.,
JSON parsers gyakoriak a legtöbb programozási nyelv, mert térkép közvetlenül objektumok. Ezzel szemben az XML nem rendelkezik természetes dokumentum-objektum leképezéssel. Ez megkönnyíti a JWT-vel való együttműködést, mint a SAML állítások.
a használat tekintetében a JWT-t internetes skálán használják. Ez kiemeli a JSON Web token ügyféloldali feldolgozásának egyszerűségét több platformon, különösen mobilon.,
A kódolt JWT és a kódolt SAML
hosszának összehasonlítása Ha többet szeretne olvasni a JSON Web tokenekről, sőt elkezdi használni őket a hitelesítés végrehajtásához a saját alkalmazásokban, keresse meg a JSON Web Token céloldalát az Auth0-on.
Leave a Reply