Skip to content

Instantly share code, notes, and snippets.

@parallel588
Forked from UA3MQJ/Joken.md
Created September 3, 2018 09:30
Show Gist options
  • Select an option

  • Save parallel588/ae989bc156a69dd1b793bc98f10f4c39 to your computer and use it in GitHub Desktop.

Select an option

Save parallel588/ae989bc156a69dd1b793bc98f10f4c39 to your computer and use it in GitHub Desktop.
Elixir Joken JWT Examples

https://github.com/bryanjos/joken - A JSON Web Token (JWT) Library

1. Закодировать JWT - подпись секретным текстовым ключем "my_secret_key"

  token = %{user_id: 123}
  |> Joken.token()
  |> Joken.with_signer(Joken.hs256("my_secret_key"))
  |> Joken.sign()
  |> Joken.get_compact()

Результат - токен

"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjN9.czVgXnZv56oliGbbFV3HZMwrJsZEWgpoZO13yxgjPuA"

2. Расшифровать токен без проверки

  token
  |> Joken.token()
  |> Joken.peek()

Результат - данные

%{"user_id" => 123}

3. Проверить подпись, зная текстовый секретный ключ

token \
|> Joken.token() \
|> Joken.with_signer(Joken.hs256("my_secret_key")) \
|> Joken.verify!()

Результат - {:ok, данные}

{:ok, %{"user_id" => 123}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment