Skip to main content

Passkey Auth made easy: all sites and APIs can be guarded even without any changes on the protected site.

Project description

Paskia

An easy to install passkey-based authentication service that protects any web application with strong passwordless login.

What is Paskia?

  • Easy to use fully featured auth&auth system (login and permissions)
  • Organization and role-based access control (optional)
    • Org admins control their users and roles
    • Master admin can create multiple independent orgs
    • Master admin makes permissions available for orgs to assign
  • User Profile and Administration by API and web interface. under /auth/ or auth.example.com
  • Reset tokens and additional device linking via QR code or codewords.
  • Pure Python, FastAPI, packaged with prebuilt Vue frontend

Two interfaces:

  • API fetch: auth checks and login without leaving your app
  • Forward-auth proxy: protect any unprotected site or service (Caddy, Nginx)

The API mode is useful for applications that can be customized to run with Paskia. Forward auth can also protect your javascript and other assets. Each provides fine-grained permission control and reauthentication requests where needed, and both can be mixed where needed.

Single Sign-On (SSO): Users register once and authenticate across all applications under your domain name (configured rp-id).

Quick Start

Install UV and run:

uvx paskia serve --rp-id example.com

On the first run it downloads the software and prints a registration link for the Admin. If you are going to be connecting localhost directly, for testing, leave out the rp-id.

The server will start up on localhost:4401 "for authentication required", serving for *.example.com.

Otherwise you will need a web server such as Caddy to serve HTTPS on your actual domain names and proxy requests to Paskia and your backend apps.

A quick example without any config file:

sudo caddy reverse-proxy --from example.com --to :4401

For a permanent install of paskia CLI command, not needing uvx:

uv tool install paskia

Configuration

There is no config file. Pass only the options on CLI:

paskia serve [options]

Optional options:

  • Listen address (one of):
    • [host]:port: Address and port (default: localhost:4401)
    • unix:/path.sock: Unix socket
  • --rp-id <domain>: Main domain (required for production)
  • --rp-name "<text>": Name of your company or site (default: same as rp-id)
  • --origin <url>: Explicit single site (default: https://<rp-id>)
  • --auth-host <domain>: Dedicated authentication site (e.g., auth.example.com)

Documentation

  • API.md: Complete HTTP and WebSocket API reference
  • Caddy.md: Caddy configuration examples
  • Headers.md: HTTP headers passed to protected applications

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paskia-0.7.2.tar.gz (12.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paskia-0.7.2-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file paskia-0.7.2.tar.gz.

File metadata

  • Download URL: paskia-0.7.2.tar.gz
  • Upload date:
  • Size: 12.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for paskia-0.7.2.tar.gz
Algorithm Hash digest
SHA256 50c086f037eb056a6a555027000a631836ae8a949bce7c1780dba4cbb0ac0107
MD5 17fcf725fa408e0bf2234cb48b7a12de
BLAKE2b-256 f869e4bcdd7d973cd68bc471cdc1fac50f063043979356eb56398a32f364d281

See more details on using hashes here.

File details

Details for the file paskia-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: paskia-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for paskia-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cede0e5c1cb98daf224805d3601ecdd665bb7c298000184d12eec1fc60d2736f
MD5 8fafb7a669824a44cce48bafd20668fc
BLAKE2b-256 ae03f1048335b035088e1007b8eb89faff4c4fb972f6e544e5e4ea172f01a8a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page