JOSE.JWT (JOSE v1.11.2) View Source
JWT stands for JSON Web Token which is defined in RFC 7519.
Encryption Examples
Signature Examples
All of the example keys generated below can be found here: https://gist.github.com/potatosalad/925a8b74d85835e285b9
See JOSE.JWS
for more Signature examples. For security purposes, verify_strict/3
is recommended over verify/2
.
HS256
# let's generate the key we'll use below and define our jwt
jwk_hs256 = JOSE.JWK.generate_key({:oct, 16})
jwt = %{ "test" => true }
# HS256
iex> signed_hs256 = JOSE.JWT.sign(jwk_hs256, %{ "alg" => "HS256" }, jwt) |> JOSE.JWS.compact |> elem(1)
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0Ijp0cnVlfQ.XYsFJDhfBZCAKnEZjR0WWd1l1ZPDD4bYpZYMHizexfQ"
# verify_strict/3 is recommended over verify/2
iex> JOSE.JWT.verify_strict(jwk_hs256, ["HS256"], signed_hs256)
{true, %JOSE.JWT{fields: %{"test" => true}},
%JOSE.JWS{alg: {:jose_jws_alg_hmac, {:jose_jws_alg_hmac, :sha256}},
b64: :undefined, fields: %{"typ" => "JWT"}}}
# verify/2 returns the same thing without "alg" whitelisting
iex> JOSE.JWT.verify(jwk_hs256, signed_hs256)
{true, %JOSE.JWT{fields: %{"test" => true}},
%JOSE.JWS{alg: {:jose_jws_alg_hmac, {:jose_jws_alg_hmac, :sha256}},
b64: :undefined, fields: %{"typ" => "JWT"}}}
# the default signing algorithm is also "HS256" based on the type of jwk used
iex> signed_hs256 == JOSE.JWT.sign(jwk_hs256, jwt) |> JOSE.JWS.compact |> elem(1)
true
Link to this section Summary
Functions
Decrypts an encrypted JOSE.JWT
using the jwk
. See JOSE.JWE.block_decrypt/2
.
Encrypts a JOSE.JWT
using the jwk
and the jwe
algorithm. See JOSE.JWK.block_encrypt/3
.
Converts a binary or map into a JOSE.JWT
.
Converts a binary into a JOSE.JWT
.
Reads file and calls from_binary/1
to convert into a JOSE.JWT
.
Converts a map into a JOSE.JWT
.
Converts a :jose_jwt
record into a JOSE.JWT
.
Merges map on right into map on left.
Returns the decoded payload as a JOSE.JWT
of a signed binary or map without verifying the signature. See JOSE.JWS.peek_payload/1
.
Returns the decoded protected as a JOSE.JWS
of a signed binary or map without verifying the signature. See JOSE.JWS.peek_protected/1
.
Signs a JOSE.JWT
using the jwk
and the jws
algorithm. See JOSE.JWK.sign/3
.
Converts a JOSE.JWT
into a binary.
Calls to_binary/1
on a JOSE.JWT
and then writes the binary to file.
Converts a JOSE.JWT
into a map.
Converts a JOSE.JWT
struct to a :jose_jwt
record.
Verifies the signed
using the jwk
and calls from/1
on the payload. See JOSE.JWS.verify/2
.
Verifies the signed
using the jwk
, whitelists the "alg"
using allow
, and calls from/1
on the payload. See JOSE.JWS.verify_strict/3
.
Link to this section Types
Specs
t() :: %JOSE.JWT{fields: term()}
Link to this section Functions
Decrypts an encrypted JOSE.JWT
using the jwk
. See JOSE.JWE.block_decrypt/2
.
Encrypts a JOSE.JWT
using the jwk
and the default block encryptor algorithm jwe
for the key type. See encrypt/3
.
Encrypts a JOSE.JWT
using the jwk
and the jwe
algorithm. See JOSE.JWK.block_encrypt/3
.
If "typ"
is not specified in the jwe
, %{ "typ" => "JWT" }
will be added.
Converts a binary or map into a JOSE.JWT
.
iex> JOSE.JWT.from(%{ "test" => true })
%JOSE.JWT{fields: %{"test" => true}}
iex> JOSE.JWT.from("{"test":true}")
%JOSE.JWT{fields: %{"test" => true}}
Converts a binary into a JOSE.JWT
.
Reads file and calls from_binary/1
to convert into a JOSE.JWT
.
Converts a map into a JOSE.JWT
.
Converts a :jose_jwt
record into a JOSE.JWT
.
Merges map on right into map on left.
See peek_payload/1
.
Returns the decoded payload as a JOSE.JWT
of a signed binary or map without verifying the signature. See JOSE.JWS.peek_payload/1
.
Returns the decoded protected as a JOSE.JWS
of a signed binary or map without verifying the signature. See JOSE.JWS.peek_protected/1
.
Signs a JOSE.JWT
using the jwk
and the default signer algorithm jws
for the key type. See sign/3
.
Signs a JOSE.JWT
using the jwk
and the jws
algorithm. See JOSE.JWK.sign/3
.
If "typ"
is not specified in the jws
, %{ "typ" => "JWT" }
will be added.
Converts a JOSE.JWT
into a binary.
Calls to_binary/1
on a JOSE.JWT
and then writes the binary to file.
Converts a JOSE.JWT
into a map.
Converts a JOSE.JWT
struct to a :jose_jwt
record.
Verifies the signed
using the jwk
and calls from/1
on the payload. See JOSE.JWS.verify/2
.
Verifies the signed
using the jwk
, whitelists the "alg"
using allow
, and calls from/1
on the payload. See JOSE.JWS.verify_strict/3
.