Django: přihlášení přes OpenID Connect s mozilla-django-oidc
Přihlášení přes Dazr Identity: bezplatné OpenID Connect hostované v EU, s passkeys, kódy e-mailem a účty Google nebo Microsoft pod jedním tlačítkem.
Potřebujete tři hodnoty z vývojářské konzole: ID klienta, tajný klíč klienta (jen u webových serverových aplikací) a URI přesměrování, které jste zaregistrovali. Vše ostatní je v dokumentu discovery na adrese https://identity.dazr.eu/.well-known/openid-configuration.
Django
Použijte mozilla-django-oidc. Zaregistrujte webovou serverovou aplikaci s URI pro přesměrování https://app.example.eu/oidc/callback/. Knihovna nečte dokument discovery, proto jsou koncové body vypsány.
# settings.py
import os
INSTALLED_APPS += ["mozilla_django_oidc"] # after django.contrib.auth
AUTHENTICATION_BACKENDS = [
"mozilla_django_oidc.auth.OIDCAuthenticationBackend",
"django.contrib.auth.backends.ModelBackend",
]
OIDC_RP_CLIENT_ID = os.environ["DAZR_CLIENT_ID"]
OIDC_RP_CLIENT_SECRET = os.environ["DAZR_CLIENT_SECRET"]
OIDC_RP_SCOPES = "openid profile email"
OIDC_RP_SIGN_ALGO = "ES256"
OIDC_OP_JWKS_ENDPOINT = "https://identity.dazr.eu/oauth/jwks"
OIDC_OP_AUTHORIZATION_ENDPOINT = "https://identity.dazr.eu/oauth/authorize"
OIDC_OP_TOKEN_ENDPOINT = "https://identity.dazr.eu/oauth/token"
OIDC_OP_USER_ENDPOINT = "https://identity.dazr.eu/oauth/userinfo"
OIDC_USE_PKCE = True
OIDC_PKCE_CODE_CHALLENGE_METHOD = "S256"
LOGIN_REDIRECT_URL = "/"
LOGOUT_REDIRECT_URL = "/"
# urls.py
from django.urls import include, path
urlpatterns += [path("oidc/", include("mozilla_django_oidc.urls"))]
# template: start the sign-in
# <a href="{% url 'oidc_authentication_init' %}">Sign in with Dazr Identity</a>
Ve výchozím stavu backend páruje uživatele podle e-mailu. Chcete-li klíčovat účty podle sub, vytvořte podtřídu OIDCAuthenticationBackend a přepište filter_users_by_claims a create_user. Používejte aktuální verzi: starší verze neumí ověřovat podpisy ES256.
sub je párový: stejný pro každou aplikaci vaší organizace, jiný pro každou jinou organizaci. Pro danou osobu se nikdy nemění, zatímco e-mailová adresa se změnit může. Ukládejte sub jako klíč účtu a email berte jako kontaktní údaj.
Další informace pro vývojáře
Dokumentace pro vývojářeVšechny průvodce integracíLibovolná knihovna OpenID ConnectCeny