Skip to content

curveball/a12n-server

Repository files navigation

@curveball/a12n-server: A simple authentication server

a12n is short for "authentication".

a12n-server is a simple authentication server that implements the OAuth2 and OpenID Connect standards. It's goals is to create a fast, lightweight server that can be quickly deployed on both dev machines and in production.

a12n-server home screenshot

Requirements

  • Node.js > 18.x
  • MySQL, Postgres or Sqlite

Try it out!

Get a test server by running:

mkdir a12n-server && cd a12n-server
npx @curveball/a12n-server

This will automatically create a configuration file and sqlite database in the current directory.

Then, just open http://localhost:8531/ to create your admin account. See Getting started for more ways to run the server.

Contributing or just curious about the code?

Run from source or run the codebase with Docker

🍭 Features

This project has been used in production since 2018 and continues to be actively maintained.

Instead of rolling your own authentication system, you get A LOT of features for free 🪄:

Supported Features Details
User Management • Create, update, delete and list users with our User API
• Password reset/recovery flow
Authentication Methods • Username/password login
• Multi-factor authentication (MFA):
• TOTP (Time-based One-Time Passcodes with Google Authenticator)
• Email one-time codes
• WebAuthN hardware keys
Authorization • Role-based access control (RBAC)
• Groups and permissions management
• Fine-grained access policies
OAuth2 Support • Multiple grant types (Authorization code, client credentials, etc)
• Token introspection and revocation
• PKCE for enhanced security
• JWT access tokens (RFC 9068)
OpenID Connect • Standard OIDC configuration endpoints
• Discovery document
• JSON Web Key Sets (JWKS)
• Multiple response types
Developer Experience • Browser-based admin UI
• Browsable REST API with HTML and JSON responses
• Signup and login views included

The server supports OAuth2 and OpenID Connect, with support for the following features and standards:

📂 Documentation