Skip to content

Elixir Plug that checks for presence of a simple token for authentication

License

Notifications You must be signed in to change notification settings

podium/simple_token_authentication

Repository files navigation

SimpleTokenAuthentication

Build Status Hex.pm Documentation Total Download License

Usage

Phoenix Integration

Inside web/router.ex file, add plug to your pipeline like so:

defmodule MyApp.Router
  use Phoenix.Router

  pipeline :api do
    plug SimpleTokenAuthentication
  end

  scope "/", MyApp do
    pipe_through :api
    get "/hello", HelloController, :hello
  end
end

Installation

  1. Add simple_token_authentication to your list of dependencies in mix.exs:
def deps do
  [{:simple_token_authentication, "~> 0.6.0"}]
end
  1. Ensure simple_token_authentication is started before your application:
def application do
  [applications: [:simple_token_authentication]]
end
  1. Configure your token in config.exs:
config :simple_token_authentication,
  token: "your-token-here",
  service_tokens: [
    service_a: "service-a-token",
    service_b: "service-b-token"
  ]
  1. Configure your connecting application to pass a token in the authorization header, e.g.:
put_header("authorization", "your-token-here")

Notes

  • Token value can be a comma-separated list of tokens
  • Specifying service_tokens is optional
  • Auth will succeed if token exists in either list (token or service_tokens)
  • Use of a service token will add "service_name" to Logging.metadata
  • Service can be identified in the conn.assigns[:simple_token_auth_service]. Will be the name of the service or :global when matching the token key

Copyright and License

Copyright (c) 2016 Podium

This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE.md file for more details.