Django: autentificare OpenID Connect cu mozilla-django-oidc

Aveți nevoie de trei valori din consola pentru dezvoltatori: ID-ul de client, secretul de client (doar pentru aplicațiile cu server web) și URI-ul de redirecționare înregistrat. Restul se află în documentul de discovery de la https://identity.dazr.eu/.well-known/openid-configuration.

Django

Folosiți mozilla-django-oidc. Înregistrați o aplicație cu server web cu URI-ul de redirecționare https://app.example.eu/oidc/callback/. Biblioteca nu citește documentul de descoperire, așa că endpointurile sunt scrise explicit.

# 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>

Implicit, backendul identifică utilizatorii după e-mail. Pentru a identifica conturile după sub, creați o subclasă a OIDCAuthenticationBackend și suprascrieți filter_users_by_claims și create_user. Folosiți o versiune actuală: versiunile mai vechi nu pot verifica semnăturile ES256.

Mai mult pentru dezvoltatori