SuperTokens
lastmod 2023-02-13created 2020-12-277 edits
Open-source auth service
Features
- Open-source alternative to Auth0 / Firebase Auth / AWS Cognito / Keycloak, etc.
- OAuth, email/password login, password recovery, session management, email verification, social login
Key components
- SuperToken Core : HTTP service written in Java. The actual business logic
- Frontend SDK : login UI features supporting web/iOS/Android/ReactNative, etc.
- Backend SDK / Driver : integrates with various backend frameworks such as NodeJS, Flask, Golang and communicates with SuperToken Core
- Database Plugin : MySQL, PostgresSQL, MongoDB, SQLite, etc.
- Backed by Y Combinator
Session Management
- Create, verify, refresh, and revoke sessions
- Follows all session best practices, such as using httpOnly cookies.
- Prevents common session vulnerabilities such as session fixation, CSRF, or brute-force attacks.
- Detects session hijacking using rotating refresh tokens
- Optimal performance - session verification < 1MS
- Automatic JWT signing key rotation without logging users out
- Ability to fetch all sessions for a given user ID
- Securely read session data on the frontend
- Manipulate session and JWT payloads
Self Hosting
version: '3'
services:
db:
image: 'postgres:latest'
environment:
POSTGRES_USER: supertokens_user
POSTGRES_PASSWORD: somePassword
POSTGRES_DB: supertokens
ports:
- 5432:5432
networks:
- app_network
restart: unless-stopped
healthcheck:
test: ['CMD', 'pg_isready -U supertokens_user']
interval: 5s
timeout: 5s
retries: 5
supertokens:
image: registry.supertokens.io/supertokens/supertokens-postgresql:4.3
depends_on:
db:
condition: service_healthy
ports:
- 3567:3567
environment:
POSTGRESQL_CONNECTION_URI: "postgresql://supertokens_user:somePassword@db:5432/supertokens"
networks:
- app_network
restart: unless-stopped
healthcheck:
test: >
bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"'
interval: 10s
timeout: 5s
retries: 5
networks:
app_network:
driver: bridge