Packages
boruta
1.2.1
3.0.0-beta.4
3.0.0-beta.3
3.0.0-beta.2
3.0.0-beta.1
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.2
2.2.1
2.2.0
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.1
2.0.0
2.0.0-rc.1
2.0.0-rc.0
1.2.1
1.2.0
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-rc.5
0.1.0-rc.4
0.1.0-rc.3
0.1.0-rc.2
0.1.0-rc.1
Core of an OAuth/OpenID Connect provider enabling authorization in your applications.
Current section
Files
Jump to
Current section
Files
lib/boruta/oauth/introspect.ex
defmodule Boruta.Oauth.Introspect do
@moduledoc """
OAuth Introspect
"""
alias Boruta.Oauth.Authorization
alias Boruta.Oauth.Error
alias Boruta.Oauth.IntrospectRequest
alias Boruta.Oauth.Token
@doc """
Returns corresponding token for the given `Boruta.Oauth.IntrospectRequest`
Note : Invalid tokens returns an error `{:error, %Error{error: :invalid_access_token, ...}}`. That must be rescued to return `%{"active" => false}` in application implementation.
## Examples
iex> token(%IntrospectRequest{
client_id: "client_id",
client_secret: "client_secret",
token: "token"
})
{:ok, %Token{...}}
"""
@spec token(request :: %IntrospectRequest{
client_id: String.t(),
client_secret: String.t(),
token: String.t()
}) ::
{:ok, token :: Token.t()} |
{:error , error :: Error.t()}
def token(%IntrospectRequest{client_id: client_id, client_secret: client_secret, token: token}) do
with {:ok, _client} <- Authorization.Client.authorize(id: client_id, secret: client_secret),
{:ok, token} <- Authorization.AccessToken.authorize(value: token) do
{:ok, token}
else
{:error, %Error{} = error} -> {:error, error}
end
end
end