Skip to content
Search

SuperTokens

lastmod 2023-02-13created 2020-12-277 edits

Open-source auth service

Features

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

Docker:

docker run -p 3567:3567 -d registry.supertokens.io/supertokens/supertokens-postgresql:4.3

Docker Compose:

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

See also

Favorite site

author Zer0 sitemap