Django: accesso OpenID Connect con mozilla-django-oidc
Accesso con Dazr Identity: OpenID Connect gratuito, ospitato nell’UE, con passkey, codici via email e account Google o Microsoft dietro un solo pulsante.
Le servono tre valori dalla console per sviluppatori: il client ID, il client secret (solo per le app web server) e l’URI di reindirizzamento registrato. Tutto il resto è nel documento di discovery all’indirizzo https://identity.dazr.eu/.well-known/openid-configuration.
Django
Usi mozilla-django-oidc. Registri un’app web server con l’URI di reindirizzamento https://app.example.eu/oidc/callback/. La libreria non legge il documento di discovery, per questo gli endpoint sono scritti per esteso.
# 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>
Di default il backend abbina gli utenti per email. Per collegare gli account a sub, crei una sottoclasse di OIDCAuthenticationBackend e sovrascriva filter_users_by_claims e create_user. Usi una versione recente: le versioni più vecchie non verificano le firme ES256.
sub è pairwise: lo stesso per ogni app della Sua organizzazione, diverso per ogni altra organizzazione. Per una persona non cambia mai, mentre un indirizzo email può cambiare. Salvi sub come chiave dell’account e tratti email come dato di contatto.
Altro per gli sviluppatori
Documentazione per sviluppatoriTutte le guide all’integrazioneQualsiasi libreria OpenID ConnectPrezzi