Skip to content

Repository files navigation

SeaCat Auth

SeaCat Auth is a microservice that provides authentication, authorization, identity management, session management and other access control features. It is designed to be used as an access control app for other microservices.

📖 Documentation is available at docs.teskalabs.com.

SeaCat Auth provides a rich REST API documented in a Postman collection.

Installation

SeaCat Auth uses uv for dependency management. Requires Python 3.11+.

Run with uv

  1. Install uv (see uv installation).

  2. Clone this repository and enter it:

git clone https://github.com/TeskaLabs/seacat-auth.git
cd seacat-auth
  1. Install project dependencies into a local virtual environment:
uv sync

Optional LDAP support (needs system LDAP development headers):

uv sync --extra ldap
  1. Start SeaCat Auth with a config file (for example etc/seacatauth.conf):
uv run python seacatauth.py -c etc/seacatauth.conf

Local editable ASAB

By default, ASAB is installed from GitHub. For local ASAB development, use an editable checkout so changes apply without reinstalling.

  1. Clone ASAB next to this repository (sibling directories):
# from the parent directory that contains seacat-auth/
git clone https://github.com/TeskaLabs/asab.git

Layout:

├── asab/
└── seacat-auth/
  1. From the seacat-auth directory, point the asab dependency at the local path:
cd seacat-auth
uv add --editable ../asab

This updates pyproject.toml with a [tool.uv.sources] entry similar to:

[tool.uv.sources]
asab = { path = "../asab", editable = true }
  1. Sync and run:
uv sync
uv run python seacatauth.py -c etc/seacatauth.conf

Do not commit the local [tool.uv.sources] override. Before committing, restore the git source (for example git checkout -- pyproject.toml uv.lock) so CI and Docker keep installing ASAB from GitHub.

Features

Design

  • Authentication Service
  • Authorization Service
  • API Service
  • Tenant Service
  • Credentials Service
  • Session Service
  • Notification Service
  • Audit Service
  • OpenIDConnect Service
  • Provisioning Service
  • Batman Service
  • Cookie Service

Components

This section clarifies role of various components in the SeaCat Auth ecosystem.

Web User Interfaces

There are two separate Web UIs (user interfaces):

  • SeaCat WebUI provides a graphical interface for Seacat Auth administration.
  • SeaCat Auth WebUI provides a login form, a password reset screen, and self-care user portal.

Docker and Docker Compose

The whole site installation can be dockerized and deployed using docker-compose, see the documentation.

Docker image is available from DockerHub

Nginx

Nginx is used to forward requests coming from outside of the environment to protected locations. These requests are first forwarded to SeaCat Auth, where their authentication state is evaluated. If already authenticated, the request is allowed into the protected space.

MongoDB

Is employed by SeaCat Auth for storage of known users and other related persistent data.

Unit test

uv sync --only-group test
uv run --no-sync python -m unittest test

About

SeaCat Auth provides authentication, authorization, identity management, session management and other access control features.

Topics

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages