Loo allkirjastatud JSON Web Token (JWT)

genereerib allkirjastatud JWT (HS256, HS384, HS512) JSON-payloadist ja HMAC-saladusest, valmis teie API-testide või autentimistokenite jaoks

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 azerty123 on 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

  1. Sisestage kasulik koormus kehtiva JSON-ina. See on objekt, nii et see algab sellest { ja lõpeb koodiga }.
  2. Määrake HMAC-i saladus. Valige tootmismärkide jaoks pikk juhuslik string.
  3. Valige algoritm: vaikimisi HS256, vastavalt oma vajadustele HS384 või HS512.
  4. Klõpsake käsul Loo. Ilmub allkirjastatud JWT, mis on valmis päisesse kleepimiseks Autor: kandja ....
  5. 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ööriistad
  • GET https://cdrn.fr/api/v1/tools/jwt-builder - toob selle tööriista skeemi
  • POST https://cdrn.fr/api/v1/tools/jwt-builder/execute - täidab selle tööriista JSON-payloadiga