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.9.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.9.0
File Size Uploaded Provenance
pirates_auth-0.9.0.tar.gz 5.6 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 12.4 kB

Release files / pirates_auth-0.9.0.tar.gz

Download URL pirates_auth-0.9.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3375c8761834ee998bf5572f2841334f2b5e75dc58763b31e7f25d2db8d19e1f
BLAKE2b-256 checksum
How to use checksums
c43d6e7adf5b896247b7821989fb7eb05ece6172edcc5f8d75f97ec3b1ed9eeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.13.15 Linux/7.2.8

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

Download URL pirates_auth-0.9.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
13ba2bb6712338307d80772dec255c3df88d20c13be768accca287ca8e74d9f8
BLAKE2b-256 checksum
How to use checksums
fee451d895a5e3138faa61a32b62085df2fa01fda1b0073801e0e57eb2ab29b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.13.15 Linux/7.2.8

Security for pirates-auth 0.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files No provenance

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