Packages

Library faciliating OpenID authentication flow throughout Phoenix application(s)

Current section

Files

Jump to
keen_auth lib plug validate_access_token.ex
Raw

lib/plug/validate_access_token.ex

defmodule KeenAuth.Plug.ValidateAccessToken do
require Logger
alias KeenAuth.Request
alias KeenAuth.Claims
def init(params) do
%{
audience: Keyword.fetch!(params, :audience),
client: Keyword.fetch!(params, :client)
}
end
def call(conn, %{audience: audience, client: client}) when is_binary(audience) do
with true <- Request.has_claims?(conn, client),
claims <- Request.get_claims(conn, client),
:ok <- Claims.validate(claims, [:exp, {:aud, audience}], client) do
conn
else
{:error, reason} ->
Logger.debug("[ValidateAccessToken] Claims invalid: #{inspect(reason)}")
Request.delete_claims(conn, client)
_ ->
conn
end
end
end