Loo allkirjastatud JSON Web Token (JWT)
- Töölaud
- Dokumentatsioon
- API
Mis on JWT Builder?
JWT Builder on võrgutööriist, mis loob allkirjastatud JSON Web Token (JWT) JSON-i kasulikust koormusest ja HMAC-saladust. See on suunatud arendajatele, kes seda vajavad API käitumise kontrollimiseks testimärgi kiireks genereerimiseks simuleerige seanssi Postmanis autentida või reprodutseerida vea, mis on seotud märgi aegumise või ulatusega.
Erinevalt meie JWT-dekoodrist, mis loeb lihtsalt märgi
JWT Builder loob täieliku märgi: loob päise, kodeerib
kasulik koormus, arvutab HMAC-signatuuri ja koostab kõik kompaktses vormingus header.payload.signature
mida ootavad kõik turul olevad JWT raamatukogud.
Miks luua JWT?
JWT ehitaja ei ole mõeldud tootmismärke väljastama. See on ennekõike tööriist arendus ja testimine. Siin on kõige levinumad stsenaariumid.
- Integratsioonitestid: loovad prognoositavad JWT-d E2E-testide juhtimiseks mis tabasid kaitstud lõpp-punkte ilma tegelikule identiteedi pakkujale tuginemata.
- API pilked: asendage ajutiselt IDP-le tehtud kõne allkirjastatud JWT-ga lokaalselt sama testisaladusega.
- Kohalik arendus: looge käsitsi a. loomine oma taustaprogrammiga token, mis sisaldab soovitud nõudeid, ilma et peaksite kogu OAuth2 voogu läbima.
- Demod: illustreerivad autentimisteekonda või töövoogu selle põhjal õigusi, ilma et teil oleks käepärast tõelist IDP-d.
- Vea reprodutseerimine: võltsige aegunud märk, märgiga
Vale
aud, luba ilma teatud väideteta, et testida veateid teie API. - Kohandatud parseri silumine: sisestage spetsiaalselt loodud JWT-d katsetage omatehtud parserit.
JWT koosseis
Signeeritud JWT koosneb kolmest punktiga eraldatud segmendist, millest igaüks on sisse kodeeritud
Base64URL (Base64 variant ilma polsterduseta ja koodiga -/_
asemel +//):
- Päis: JSON-objekt, mis kirjeldab allkirja algoritmi ja märgi tüüpi,
näiteks
{"alg":"HS256","typ":"JWT"}. JWT Builder genereerib selle automaatselt valitud algoritmist. - Kasulik koormus: suvaline JSON-objekt, mis sisaldab loa nõudeid (subjekt, load, aegumiskuupäevad). See on teie poolt pakutav osa.
- Allkiri: konkateneerimisel arvutatud HMAC-SHA
base64url(header) + "." + base64url(payload)teie salavõtmega. See on tema, kes garanteerib märgi terviklikkuse.
Kasutamise juhtumid üksikasjalikult
- API muster E2E testimiseks: teie Cypressi või Playwrighti komplekt peab kutsuma API-t
mis nõuab
volitust: kandja .... Selle asemel, et korraldada täielik sisselogimine aadressil iga testiga allkirjastame JWT käigu pealt jagatud saladusega ja sisestame selle päisesse. - SSO demo: esitage ühendatud autentimisteekond sõltumata Interneti-IDP-st.
- Testimisseade: genereerige deterministlik JWT kasulikust koormusest, mis on teada toimivad ühikutestides stabiilse kinnitusena.
- Kohandatud parseri diagnoos: omatehtud JWT-parseri testimine žetoonidega tahtlikult minimaalne või tahtlikult veider (puuduvad väited, ootamatud tüübid).
- Õppimine: saate täpselt aru, kuidas JWT on ehitatud kasuliku koormuse muutmine ja allkirja muutumise jälgimine.
Toetatud algoritmid: HS256, HS384, HS512
Meie tööriist toetab kolme standardset JWT spetsifikatsiooni HMAC algoritmi (RFC 7519):
- HS256: HMAC koos SHA-256-ga. 32-baidine signatuur. Praktikas kasutatakse enim, hea kompromiss kiiruse ja krüptograafilise tugevuse vahel. Vaikimisi soovitatav.
- HS384: HMAC koos SHA-384-ga. 48-baidine signatuur. Kohandatud kontekstidele, mis nõuavad suuremat ohutusvaru.
- HS512: HMAC koos SHA-512-ga. 64-baidine signatuur. Kõige vastupidavam, selle hinnaga veidi suuremast märgist.
HMAC või RSA?
HS* algoritmid on sümmeetrilised: allkirjastamiseks ja kinnitamiseks kasutatakse sama võtit. See on kiire ja lihtne, kuid see tähendab, et kõik teenused, mis saavad luba kontrollida, on ka seda võimelised neid kiirgama. Kui teil on vaja need kaks rolli eraldada (üks väljaandja, mitu tarbijad), kasutage RS256/RS384/RS512 algoritme (RSA, asümmeetriline), mida saate kinnitada meie JWT kinnitajaga.
Turvalisus: oma saladuse kaitsmine
HMAC-is allkirjastatud JWT turvalisus sõltub täielikult saladuse konfidentsiaalsusest. Mõned põhireeglid:
- Kasutage pikka juhuslikku saladust. RFC 7518 soovitab vähemalt suurust
algoritmi väljundist (32 baiti HS256 jaoks, 48 baiti HS384 jaoks, 64 baiti HS512 jaoks). Parool
Inimene nagu
azerty123on võrguühenduseta triviaalselt jõhkra jõuga rünnatav. - Ärge kunagi allkirjastage kliendipoolset JWT-d. Saladus leiaks koodist Brauserisse levitatud JavaScript, mis on avatud kõigile kasutajatele. Allkiri peab alati alles jääma serveri pool.
- Salvestage saladus keskkonnamuutujasse (nt
JWT_SECRET), mitte kunagi Giti hoidlas. Kaaluge varahoidla kasutamist, nagu HashiCorp Vault, AWS Secrets Manager või Symfony saladused olenevalt pinust. - Keerake saladust regulaarselt (võtmete vaheldumine), eriti pärast vahejuhtumeid või konfiguratsioonile juurdepääsu omanud isiku lahkumine.
- JWT Builder on testimiseks ja õppimiseks. Tootmiseks, kasutage oma raamistiku JWT teeki (lcobucci/jwt, firebase/php-jwt, jose-php).
Nõuete esitamise head tavad
Kasulik koormus on tasuta JSON-objekt, kuid RFC 7519 määratleb registreeritud nõuete komplekti et JWT raamatukogud teavad, kuidas tõlgendada. Õigete väidete kaasamine muudab teie märgi kaasaskantavaks ja väldib peeneid vigu:
- iss (väljaandja): näiteks väljaandja identifikaator
"https://api.example.com". - all (subjekt): asjaomase isiku või üksuse identifikaator, sageli ID kasutaja.
- aud (vaatajaskond): kellele märk on mõeldud, et vältida token teises API-s.
- Aeg (aegumisaeg): Unixi ajatempel, mille möödumisel luba enam ei kehti. Kaasake alati, isegi testmärgi puhul: aegumiseta luba on a halba harjumust on hiljem raske parandada.
- nbf (mitte varem): ajatempel, enne mida luba veel ei kehti. Kasulik hiljem aktiveeritava märgi eelväljastamiseks.
- iat (välja antud): väljastamise ajatempel, kasulik logimiseks ja tühistamiseks.
- jti (JWT ID): loa kordumatu identifikaator, mis on oluline idempotentsuse ja tühistamisloendi rakendamiseks.
Tüüpilise kasuliku koormuse näide
kood>{
"iss": "https://api.example.com",
"sub": "kasutaja-12345",
"aud": "mobiilirakendus",
"iat": 1714723200,
"exp": 1714726800,
"jti": "9f2d6b1e-2c4a-4f8a-9c3a-87a2b8a4b7e1",
"scope": "loe:profiil kirjuta:profiil"
}
Kuidas tööriista kasutada
- Sisestage kasulik koormus kehtiva JSON-ina. See on objekt, nii et see algab sellest
{ja lõpeb koodiga}. - Määrake HMAC-i saladus. Valige tootmismärkide jaoks pikk juhuslik string.
- Valige algoritm: vaikimisi HS256, vastavalt oma vajadustele HS384 või HS512.
- Klõpsake käsul Loo. Ilmub allkirjastatud JWT, mis on valmis päisesse kleepimiseks
Autor: kandja .... - Seejärel saate kinnitada märgi sama saladusega kinnitage edasi-tagasi reisi järjepidevust või dekodeerige uuesti lugemiseks selle sisu.
Korduma kippuvad küsimused
Millist algoritmi valida: HS256, HS384, HS512?
Peaaegu kõikidel juhtudel on HS256 õige valik. See pakub taset Autentimislubade jaoks täiesti piisav turvalisus kompaktse allkirjaga (32 baiti) ja kiire arvutamine. HS384 ja HS512 on õigustatud ainult kontekstis täpsed regulatiivsed nõuded või kui teil õnnestub väga pika elueaga märgid. Suurus Kõrgem signatuur muudab iga HTTP-päringu raskemaks.
Kuidas luua RSA paari oma JWT-de allkirjastamiseks?
OpenSSL-iga kahes käsus: võtme jaoks openssl genrsa -out private.pem 2048
privaatne, seejärel ekstraktimiseks openssl rsa -in private.pem -pubout -out public.pem
avalik võti. Uute teenuste jaoks soovitame nüüd kasutada turvavõtmeid.
3072 bitti või 4096 bitti. Privaatvõti jääb saatja poolele; avalik võti on
levitab vabalt teenustele, mis vajavad žetoonide kontrollimist.
Mis on soovitatav aegumisaeg?
Juurdepääsuloa jaoks: 5–15 minutit. Värskendusmärgi jaoks: paar päeva
paar nädalat, kuid serveripoolse tühistamismehhanismiga. Mida rohkem on žetoon
pikaealine, seda suurem on tööaken lekke korral. JWT-de testimiseks sina
võib võtta rohkem aega, kuid vältige exp mitu aastat:
lõpuks lekivad need Giti hoidlatesse.
Kas ma saan allkirjastada väga lühikese salavõtmega?
Tehniliselt jah, kuid see on soovitav. HMAC-i saladus vähem kui
16 baiti on võrguühenduseta jõhkra jõu rünnakute suhtes nõrgalt vastupidav ja seda leidub
tööriistade olemus, mis murravad JWT HS256 madala saladusega sekunditega. The
RFC 7518 soovitab vähemalt algoritmi väljundi suurust: HS256 jaoks 32 baiti,
HS384 jaoks 48, HS512 jaoks 64. Looge oma saladusi kasutades
openssl rand -base64 64.
Miks minu kasulik koormus tagasi lükatakse?
Kasulik koormus peab olema kehtiv JSON-objekt. Levinud vead: üksikud tsitaadid
kahekordne, lisakoma enne }, väärtus ilma jutumärkideta stringi jaoks. Kinnitage
kõigepealt oma JSON-i meie JSON-vormindajaga.
Kas keegi teine saab loodud JWT-d dekrüpteerida?
Allkirjastatud JWT ei ole krüptitud: kasulik koormus on ainult Base64URL-i kodeeringuga. Kõik maailm võib seda lugeda. Kui kasulik koormus sisaldab tundlikke andmeid, kasutage JWE-vormingut (JSON Web Encryption), mis lisab krüptimise. Meie tööriist toodab JWS-i (ainult allkirjastatud).
Päringunäide
curl -X POST https://cdrn.fr/api/v1/tools/jwt-builder/execute \
-H "Content-Type: application/json" \
-d '{"payload":"...","secret":"...","algorithm":"HS256"}'
Sisendskeem
| Väli | Tüüp | Kohustuslik | Vaikimisi |
|---|---|---|---|
payload |
text | ✓ | – |
secret |
text | ✓ | – |
algorithm |
choice (HS256, HS384, HS512) | ✓ | HS256 |
Lõpp-punktid
GET https://cdrn.fr/api/v1/tools- loetleb kõik saadaolevad tööriistadGET https://cdrn.fr/api/v1/tools/jwt-builder- toob selle tööriista skeemiPOST https://cdrn.fr/api/v1/tools/jwt-builder/execute- täidab selle tööriista JSON-payloadiga