Skip to main content

Pirates

Django app na uživatele, týmy a skupiny, s napojením na SSO.

code style: Black license MIT Python Version Django Version

Bezheslová SSO autentizace (OpenID Connect) a abstraktní modely uživatele, týmu a skupiny pro Django.

Požadavky

  • Python 3.11+
  • Django 5.2–6.x

Instalace

pip install pirates-auth

Na PyPI se balíček jmenuje pirates-auth, ale importuje se jako pirates – pod tímto názvem se také přidává do INSTALLED_APPS.

Použití

Settings

Přidat pirates do INSTALLED_APPS.

Modely

Jsou k dipozici abstraktní modely pro uživatele, tým a organizační skupinu. Ty lze doplnit o další fieldy specifické pro aplikaci. Příklad:

from django.db import models
from pirates.models import AbstractUser

class CustomUser(AbstractUser):
    is_friendly = models.BooleanField(default=True)

A nezapomenout model pro uživatele nastavit v settings:

AUTH_USER_MODEL = "myapp.CustomUser"

Uživatel je bezheslový – autentizuje se přes SSO (OpenID Connect), takže AbstractUser nedědí z AbstractBaseUser a nemá pole password ani last_login. get_session_auth_hash() je proto odvozen z sso_id, aby django.contrib.auth.login() fungoval i na Djangu 6+.

URLs

URL patterns (v současné době pouze pro OpenID Connect) jsou definovány v pirates.urls. Stačí je připojit k URL patterns projektu:

from pirates.urls import urlpatterns as pirates_urlpatterns 

urlpatterns = [
    # URL patterns projektu
    # ...
] + pirates_urlpatterns

SSO přes OpenID Connect

Implementaci OpenID zajišťuje knihovna mozilla-django-oidc.

V settings projektu je třeba nastavit několik konfiguračních konstant a autentifikační backend. Příklad settings (s využitím django-environ):

from os.path import join
import environ

env = environ.Env()

AUTHENTICATION_BACKENDS = ["pirates.auth.PiratesOIDCAuthenticationBackend"]

OIDC_RP_CLIENT_ID = env.str("OIDC_RP_CLIENT_ID")
OIDC_RP_CLIENT_SECRET = env.str("OIDC_RP_CLIENT_SECRET")
OIDC_RP_REALM_URL = env.str("OIDC_RP_REALM_URL")
OIDC_RP_SIGN_ALGO = "RS256"
OIDC_OP_JWKS_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/certs")
OIDC_OP_AUTHORIZATION_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/auth")
OIDC_OP_TOKEN_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/token")
OIDC_OP_USER_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/userinfo")

URL patterns pro OpenID Connect už jsou součástí pirates.urls (viz výše).

Signál po přihlášení

Po přihlášení uživatele je poslán signál pirates.signals.post_login s parametry:

  • sender - PiratesOIDCAuthenticationBackend
  • user - přihlášený uživatel (instance AUTH_USER_MODEL)
  • created - True/False zda-li byl vytvořen nový uživatel
  • request - instance HttpRequest

Metadata

Release files for pirates-auth 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pirates-auth 0.8.0
File Size Uploaded
pirates_auth-0.8.0.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pirates-auth 0.8.0
File Interpreter ABI Platform
pirates_auth-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.4 kB

Release files / pirates_auth-0.8.0.tar.gz

Download URL pirates_auth-0.8.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8c46ba25ac00252500bad758ea6d292cdaca16ec4b4acd663a704a5eae5e94a2
BLAKE2b-256 checksum
How to use checksums
1a4767f48a78685af5ea094180b5e842ed30b3a7e16093a988b8e6f20714d34a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.13.13 Linux/7.1.1

Release files / pirates_auth-0.8.0-py3-none-any.whl

Download URL pirates_auth-0.8.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bcb30695d78f6978c2f2934ca961be9082a91059fbe05ba1fd98d69f98b2b743
BLAKE2b-256 checksum
How to use checksums
3799aa3dfae85e83d8ad5ae0d281e991fc82a9e843f65401792d376c83d4d9af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.13.13 Linux/7.1.1

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page