JWT (yajwt v1.4.2)

View Source

Encode claims for transmission as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure, enabling the claims to be integrity protected with a Message Authentication Code (MAC), to be later verified

see http://tools.ietf.org/html/rfc7519

Summary

Functions

Return a JSON Web Token (JWT), a string representing a set of claims as a JSON object that is encoded in a JWS

Given an options map, return a map of header options

Return a tuple {:ok, claims (map)} if the JWT signature is verified, or {:error, exception} otherwise

Functions

sign(claims, options)

@spec sign(map(), Keyword.t() | map()) :: binary()

Return a JSON Web Token (JWT), a string representing a set of claims as a JSON object that is encoded in a JWS

Example

iex> claims = %{iss: "joe", exp: 1300819380, "http://example.com/is_root": true}
...> key = "gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C"
...> JWT.sign(claims, key: key)
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzMDA4MTkzODAsImlzcyI6ImpvZSIsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.3mT6HxSP5rGsHOuvCmFN25TXWTTzEi-HpEoeXlyfEYc"

see http://tools.ietf.org/html/rfc7519#section-7.1

unify_header(options)

@spec unify_header(Keyword.t() | map()) :: map()

Given an options map, return a map of header options

Example

iex> JWT.unify_header(alg: "RS256", key: "key")
%{typ: "JWT", alg: "RS256"}

Filters out unsupported claims options and ignores any encryption keys

verify(jwt, options)

@spec verify(binary(), map()) :: {:ok, map()} | {:error, Keyword.t()}

Return a tuple {:ok, claims (map)} if the JWT signature is verified, or {:error, exception} otherwise

Example

iex> jwt ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiam9lIiwiaHR0cDovL2V4YW1wbGUuY29tL2lzX3Jvb3QiOnRydWUsImRhdGV0aW1lIjoxMzAwODE5MzgwfQ.8CbXtOJ51MfPLlNTDpMMBHExFZGmqIC2c_hjuY0Dp24"
...> key = "gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C"
...> JWT.verify(jwt, %{key: key})
{:ok, %{"name" => "joe", "datetime" => 1300819380, "http://example.com/is_root" => true}}
iex> jwt ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiam9lIiwiaHR0cDovL2V4YW1wbGUuY29tL2lzX3Jvb3QiOnRydWUsImRhdGV0aW1lIjoxMzAwODE5MzgwfQ.8CbXtOJ51MfPLlNTDpMMBHExFZGmqIC2c_hjuY0Dp24"
...> key = "gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr9C"
...> JWT.verify(jwt, %{key: key, decode: [keys: :atoms]})
{:ok, %{datetime: 1300819380, "http://example.com/is_root": true, name: "joe"}}

see http://tools.ietf.org/html/rfc7519#section-7.2

verify!(jwt, options)

@spec verify!(binary(), map()) :: map() | no_return()