goth alternatives and similar packages
Based on the "Authentication" category.
Alternatively, view goth alternatives based on common mentions on social networks and blogs.
-
Phauxth
Not actively maintained - Authentication library for Phoenix, and other Plug-based, web applications -
Shield
DISCONTINUED. Shield is an OAuth2 Provider hex package and also a standalone microservice build top of the Phoenix Framework and 'authable' package. -
elixir_auth_google
👤Minimalist Google OAuth Authentication for Elixir Apps. Tested, Documented & Maintained. Setup in 5 mins. 🚀 -
aeacus
A simple, secure, and highly configurable Elixir identity [username | email | id | etc.]/password authentication module to use with Ecto. -
zachaeus
An easy to use licensing system, using asymmetric cryptography to generate and validate licenses.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of goth or a related project?
Popular Comparisons
README
Goth
Google + Auth = Goth
A simple library to generate and retrieve OAuth2 tokens for use with Google Cloud Service accounts.
Installation
Note: below are instructions for using Goth v1.3+. For more information on earlier versions of Goth, see v1.2.0 documentation on hexdocs.pm.
- Add
:goth
to your list of dependencies inmix.exs
.
def deps do
[
{:goth, "~> 1.3"}
]
end
- Add Goth to your supervision tree:
defmodule MyApp.Application do
use Application
def start(_type, _args) do
credentials =
"GOOGLE_APPLICATION_CREDENTIALS_JSON"
|> System.fetch_env!()
|> Jason.decode!()
source = {:service_account, credentials}
children = [
{Goth, name: MyApp.Goth, source: source}
]
Supervisor.start_link(children, strategy: :one_for_one)
end
end
If you set GOOGLE_APPLICATION_CREDENTIALS
or
GOOGLE_APPLICATION_CREDENTIALS_JSON
, have a
~/.config/gcloud/application_default_credentials.json
file, or deploy your
application to Google Cloud, you can omit the :source
option:
def start(_type, _args) do
children = [
{Goth, name: MyApp.Goth}
]
Supervisor.start_link(children, strategy: :one_for_one)
end
If you want to use multiple credentials, you may consider doing:
def start(_type, _args) do
Supervisor.start_link(servers(), strategy: :one_for_one)
end
defp servers do
servers = [
{MyApp.Cred1, source1},
...
{MyApp.CredN, source2}
]
for {name, source} <- servers do
Supervisor.child_spec({Goth, name: name, source: source}, id: name)
end
end
- Fetch the token:
iex> Goth.fetch!(MyApp.Goth)
%Goth.Token{
expires: 1453356568,
token: "ya29.cALlJ4ICWRvMkYB-WsAR-CZnExE459PA7QPqKg5nei9y2T9-iqmbcgxq8XrTATNn_BPim",
type: "Bearer",
...
}
See Goth.start_link/1
for more information about possible configuration options.
Upgrading from Goth 1.2
See [Upgrading from Goth 1.2](UPGRADE_GUIDE.md) guide for more information.
Community resources
Copyright and License
Copyright (c) 2016 Phil Burrows
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the [LICENSE.md](./LICENSE.md) file for more details.
*Note that all licence references and agreements mentioned in the goth README section above
are relevant to that project's source code only.