Guardian is a token based authentication library for use with Elixir applications.
Guardian remains a functional system. It integrates with Plug but can be used outside of it. If you're implementing a TCP/UDP protocol directly or want to utilize your authentication via channels in Phoenix, Guardian can work for you.
The core currency of authentication in Guardian is the token. By default JSON Web Tokens are supported out of the box but you can use any token that:
Has the concept of a key-value payload
Is tamper proof
Can serialize to a String
Has a supporting module that implements the Guardian.Token behaviour
You can use Guardian tokens to authenticate:
Web endpoints (Plug/Phoenix/X)
Channels/Sockets (Phoenix - optional)
Any other system you can imagine. If you can attach an authentication token you can authenticate it.
Tokens should be able to contain any assertions (claims) that a developer wants to make and may contain both standard and application specific information encoded within them.
Guardian also allows you to configure multiple token types/configurations in a single application.