Function: jwtDecrypt()

August 29, 2025 ยท View on GitHub

๐Ÿ’— Help the project

Support from the community to continue maintaining and improving this module is welcome. If you find the module useful, please consider supporting the project by becoming a sponsor.

Call Signature

โ–ธ jwtDecrypt<PayloadType>(jwt, key, options?): Promise<JWTDecryptResult<PayloadType>>

Verifies the JWT format (to be a JWE Compact format), decrypts the ciphertext, validates the JWT Claims Set.

This function is exported (as a named export) from the main 'jose' module entry point as well as from its subpath export 'jose/jwt/decrypt'.

Type Parameters

Type ParameterDefault type
PayloadTypeJWTPayload

Parameters

ParameterTypeDescription
jwtstring | Uint8ArrayJSON Web Token value (encoded as JWE).
keyUint8Array | CryptoKey | JWK | KeyObjectPrivate Key or Secret to decrypt and verify the JWT with. See Algorithm Key Requirements.
options?JWTDecryptOptionsJWT Decryption and JWT Claims Set validation options.

Returns

Promise<JWTDecryptResult<PayloadType>>

Example

const secret = jose.base64url.decode('zH4NRP1HMALxxCFnRZABFA7GOJtzU_gIj02alfL1lvI')
const jwt =
  'eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..MB66qstZBPxAXKdsjet_lA.WHbtJTl4taHp7otOHLq3hBvv0yNPsPEKHYInmCPdDDeyV1kU-f-tGEiU4FxlSqkqAT2hVs8_wMNiQFAzPU1PUgIqWCPsBrPP3TtxYsrtwagpn4SvCsUsx0Mhw9ZhliAO8CLmCBQkqr_T9AcYsz5uZw.7nX9m7BGUu_u1p1qFHzyIg'

const { payload, protectedHeader } = await jose.jwtDecrypt(jwt, secret, {
  issuer: 'urn:example:issuer',
  audience: 'urn:example:audience',
})

console.log(protectedHeader)
console.log(payload)

Call Signature

โ–ธ jwtDecrypt<PayloadType>(jwt, getKey, options?): Promise<JWTDecryptResult<PayloadType> & ResolvedKey>

Type Parameters

Type ParameterDefault type
PayloadTypeJWTPayload

Parameters

ParameterTypeDescription
jwtstring | Uint8ArrayJSON Web Token value (encoded as JWE).
getKeyJWTDecryptGetKeyFunction resolving Private Key or Secret to decrypt and verify the JWT with. See Algorithm Key Requirements.
options?JWTDecryptOptionsJWT Decryption and JWT Claims Set validation options.

Returns

Promise<JWTDecryptResult<PayloadType> & ResolvedKey>