jose

JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes.

MIT License

Downloads
47.9M
Stars
4.9K
Committers
32

Bot releases are visible (Hide)

jose - v5.9.2

Published by github-actions[bot] about 1 month ago

Refactor

  • types: remove index signatures from JWK interfaces (ccf0cda)
jose - v5.9.1

Published by github-actions[bot] about 1 month ago

Fixes

  • types: add missing index signature on the convenience JWK types (90a93dc)
jose - v5.9.0

Published by github-actions[bot] about 1 month ago

Features

  • allow JWK objects as "key" input to sign and verify (c6302ea)

This method of passing private or public keys does not yield the same performance as passing a CryptoKey or KeyObject instances, its main purpose is for convenience or for when you're not going to be re-using the same set of keys for the operation, in which case you should use one of the import key methods to obtain a CryptoKey or KeyObject.

Example Signing

const alg = "RS256";
const jwk = {
  kty: "RSA",
  n: "whYOFK2Ocbbpb_zVypi9SeKiNUqKQH0zTKN1-6fpCTu6ZalGI82s7XK3tan4dJt90ptUPKD2zvxqTzFNfx4HHHsrYCf2-FMLn1VTJfQazA2BvJqAwcpW1bqRUEty8tS_Yv4hRvWfQPcc2Gc3-_fQOOW57zVy-rNoJc744kb30NjQxdGp03J2S3GLQu7oKtSDDPooQHD38PEMNnITf0pj-KgDPjymkMGoJlO3aKppsjfbt_AH6GGdRghYRLOUwQU-h-ofWHR3lbYiKtXPn5dN24kiHy61e3VAQ9_YAZlwXC_99GGtw_NpghFAuM4P1JDn0DppJldy3PGFC0GfBCZASw",
  e: "AQAB",
  d: "VuVE_KEP6323WjpbBdAIv7HGahGrgGANvbxZsIhm34lsVOPK0XDegZkhAybMZHjRhp-gwVxX5ChC-J3cUpOBH5FNxElgW6HizD2Jcq6t6LoLYgPSrfEHm71iHg8JsgrqfUnGYFzMJmv88C6WdCtpgG_qJV1K00_Ly1G1QKoBffEs-v4fAMJrCbUdCz1qWto-PU-HLMEo-krfEpGgcmtZeRlDADh8cETMQlgQfQX2VWq_aAP4a1SXmo-j0cvRU4W5Fj0RVwNesIpetX2ZFz4p_JmB5sWFEj_fC7h5z2lq-6Bme2T3BHtXkIxoBW0_pYVnASC8P2puO5FnVxDmWuHDYQ",
  p: "07rgXd_tLUhVRF_g1OaqRZh5uZ8hiLWUSU0vu9coOaQcatSqjQlIwLW8UdKv_38GrmpIfgcEVQjzq6rFBowUm9zWBO9Eq6enpasYJBOeD8EMeDK-nsST57HjPVOCvoVC5ZX-cozPXna3iRNZ1TVYBY3smn0IaxysIK-zxESf4pM",
  q: "6qrE9TPhCS5iNR7QrKThunLu6t4H_8CkYRPLbvOIt2MgZyPLiZCsvdkTVSOX76QQEXt7Y0nTNua69q3K3Jhf-YOkPSJsWTxgrfOnjoDvRKzbW3OExIMm7D99fVBODuNWinjYgUwGSqGAsb_3TKhtI-Gr5ls3fn6B6oEjVL0dpmk",
  dp: "mHqjrFdgelT2OyiFRS3dAAPf3cLxJoAGC4gP0UoQyPocEP-Y17sQ7t-ygIanguubBy65iDFLeGXa_g0cmSt2iAzRAHrDzI8P1-pQl2KdWSEg9ssspjBRh_F_AiJLLSPRWn_b3-jySkhawtfxwO8Kte1QsK1My765Y0zFvJnjPws",
  dq: "KmjaV4YcsVAUp4z-IXVa5htHWmLuByaFjpXJOjABEUN0467wZdgjn9vPRp-8Ia8AyGgMkJES_uUL_PDDrMJM9gb4c6P4-NeUkVtreLGMjFjA-_IQmIMrUZ7XywHsWXx0c2oLlrJqoKo3W-hZhR0bPFTYgDUT_mRWjk7wV6wl46E",
  qi: "iYltkV_4PmQDfZfGFpzn2UtYEKyhy-9t3Vy8Mw2VHLAADKGwJvVK5ficQAr2atIF1-agXY2bd6KV-w52zR8rmZfTr0gobzYIyqHczOm13t7uXJv2WygY7QEC2OGjdxa2Fr9RnvS99ozMa5nomZBqTqT7z5QV33czjPRCjvg6FcE",
};

const jwt = await new jose.SignJWT({ "urn:example:claim": true })
  .setProtectedHeader({ alg })
  .setIssuedAt()
  .setIssuer("urn:example:issuer")
  .setAudience("urn:example:audience")
  .setExpirationTime("2h")
  .sign(jwk);

console.log(jwt);

Example Verification

const alg = "RS256";
const jwk = {
  kty: "RSA",
  n: "whYOFK2Ocbbpb_zVypi9SeKiNUqKQH0zTKN1-6fpCTu6ZalGI82s7XK3tan4dJt90ptUPKD2zvxqTzFNfx4HHHsrYCf2-FMLn1VTJfQazA2BvJqAwcpW1bqRUEty8tS_Yv4hRvWfQPcc2Gc3-_fQOOW57zVy-rNoJc744kb30NjQxdGp03J2S3GLQu7oKtSDDPooQHD38PEMNnITf0pj-KgDPjymkMGoJlO3aKppsjfbt_AH6GGdRghYRLOUwQU-h-ofWHR3lbYiKtXPn5dN24kiHy61e3VAQ9_YAZlwXC_99GGtw_NpghFAuM4P1JDn0DppJldy3PGFC0GfBCZASw",
  e: "AQAB",
};

const jwt =
  "eyJhbGciOiJSUzI1NiJ9.eyJ1cm46ZXhhbXBsZTpjbGFpbSI6dHJ1ZSwiaWF0IjoxNjY5MDU2NDg4LCJpc3MiOiJ1cm46ZXhhbXBsZTppc3N1ZXIiLCJhdWQiOiJ1cm46ZXhhbXBsZTphdWRpZW5jZSJ9.gXrPZ3yM_60dMXGE69dusbpzYASNA-XIOwsb5D5xYnSxyj6_D6OR_uR_1vqhUm4AxZxcrH1_-XJAve9HCw8az_QzHcN-nETt-v6stCsYrn6Bv1YOc-mSJRZ8ll57KVqLbCIbjKwerNX5r2_Qg2TwmJzQdRs-AQDhy-s_DlJd8ql6wR4n-kDZpar-pwIvz4fFIN0Fj57SXpAbLrV6Eo4Byzl0xFD8qEYEpBwjrMMfxCZXTlAVhAq6KCoGlDTwWuExps342-0UErEtyIqDnDGcrfNWiUsoo8j-29IpKd-w9-C388u-ChCxoHz--H8WmMSZzx3zTXsZ5lXLZ9IKfanDKg";

const { payload, protectedHeader } = await jose.jwtVerify(jwt, jwk, {
  issuer: "urn:example:issuer",
  audience: "urn:example:audience",
});

console.log(protectedHeader);
console.log(payload);
jose - v5.8.0

Published by github-actions[bot] about 2 months ago

Features

  • add subpath module exports (72ecff6)

Refactor

  • omit LocalJWKSet export since it's no longer needed for RemoteJWKSet (c502731)
jose - v5.7.0

Published by github-actions[bot] 2 months ago

Features

  • graduate jwksCache to stable API (0f09c12)
jose - v5.6.3

Published by github-actions[bot] 4 months ago

Fixes

  • add sideEffects:false to nested ESM package.json files (f3aff1c)
jose - v4.15.9

Published by panva 4 months ago

Fixes

  • add sideEffects:false to nested ESM package.json files (17eef5f)
jose - v5.6.2

Published by github-actions[bot] 4 months ago

Refactor

  • CryptoKey normalization is not always async (b7751f5)
  • weak cache normalized CryptoKey instances (32b25a5)

Fixes

  • ensure KeyObject type in Web API encrypt/decrypt (b7920bd)
jose - v5.6.1

Published by github-actions[bot] 4 months ago

Refactor

  • normalize is always defined for Web API runtimes (7bcb103)

Fixes

  • workaround turbo's eager optimizations (723a042), closes #690
jose - v5.6.0

Published by github-actions[bot] 4 months ago

Features

  • support KeyObject inputs in WebCryptoAPI runtimes given compatibility (e178b8f)
jose - v5.5.0

Published by github-actions[bot] 4 months ago

Features

jose - v5.4.1 Latest Release

Published by github-actions[bot] 4 months ago

Fixes

  • ensure latest release on npm is v5.x (a9b2a30)
jose -

Published by panva 4 months ago

Fixes

  • add a workerd package.json target (e36d69e)
jose - v5.4.0

Published by github-actions[bot] 5 months ago

Features

  • expose JWT's payload in JWTClaimValidationFailed instances (58bcffb), closes #680

Refactor

  • add explicit return types everywhere (cc2b2d7)
jose - v5.3.0

Published by github-actions[bot] 5 months ago

Features

  • allow observing remote JWKS resolver state and its manual reload (fa8b639)

Refactor

  • if should not be the only statement in else blocks (a6b716b)
jose - v5.2.4

Published by github-actions[bot] 7 months ago

Refactor

  • use createLocalJWKSet instead of LocalJWKSet in createRemoteJWKSet (a7c566c)
jose - v5.2.3

Published by github-actions[bot] 8 months ago

Refactor

  • move iv generation and optional outputs around (05c4351)
jose -

Published by panva 8 months ago

Fixes

jose - v2.0.7

Published by panva 8 months ago

Fixes

jose - v5.2.2

Published by github-actions[bot] 8 months ago

Fixes

  • types: iv and tag is optional in JSON serializations (53019cd)
Package Rankings
Top 0.63% on Npmjs.org
Top 8.17% on Proxy.golang.org
Top 19.68% on Repo1.maven.org
Top 0.67% on Deno.land