Skip to content

🔥⚗️ Handling and testing Firebase Auth tokens in Elixir

License

Notifications You must be signed in to change notification settings

atoncetti/ExFirebaseAuth

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExFirebaseAuth 🔥

ExFirebaseAuth is a library that handles ID tokens from Firebase, which is useful for using Firebase's auth solution because Firebase does not have an Elixir SDK for auth themselves. ExFirebaseAuth also comes with some testing utilities that mock and generate ID tokens for your integration tests.

More information on how ID tokens work in Firebase Auth

This library

  • Keeps track of google's public keys used for signing ID tokens
  • Verifies ID tokens
  • Veries whether the issuer matches your firebase project

This library does not

  • Aim to implement Firebase user admin SDK endpoints

Installation

If available in Hex, the package can be installed by adding ex_firebase_auth to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_firebase_auth, "~> 0.5.1"}
  ]
end

Usage

Add the Firebase auth issuer name for your project to your config.exs. This is required to make sure only your project's firebase tokens are accepted.

config :ex_firebase_auth, :issuer, "https://securetoken.google.com/project-123abc"

or if you'd like to define a different issuer per app

config :your_app, :ex_firebase_auth, 
  issuer: "https://securetoken.google.com/project-123abc"

Verifying a token

ExFirebaseAuth.Token.verify_token("Some token string")
iex> {:ok, "userid", %{}}

or

ExFirebaseAuth.Token.verify_token("Some token string", :your_app)
iex> {:ok, "userid", %{}}

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ex_firebase_auth.

About

🔥⚗️ Handling and testing Firebase Auth tokens in Elixir

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%