Pirates
Django app na uživatele, týmy a skupiny, s napojením na SSO.
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-PiratesOIDCAuthenticationBackenduser- přihlášený uživatel (instanceAUTH_USER_MODEL)created-True/Falsezda-li byl vytvořen nový uživatelrequest- instanceHttpRequest
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pirates_auth-0.9.0.tar.gz | 5.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.