Django: OpenID Connect-innlogging med mozilla-django-oidc
Innlogging med Dazr Identity: gratis OpenID Connect, driftet i EU, med passnøkler, e-postkoder og Google- eller Microsoft-kontoer bak én knapp.
Du trenger tre verdier fra utviklerkonsollen: klient-ID-en, klienthemmeligheten (bare apper med webserver) og omdirigerings-URI-en du registrerte. Resten står i discovery-dokumentet på https://identity.dazr.eu/.well-known/openid-configuration.
Django
Bruk mozilla-django-oidc. Registrer en app med webserver med omdirigerings-URI-en https://app.example.eu/oidc/callback/. Biblioteket leser ikke discovery-dokumentet, så endepunktene er skrevet ut.
# 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>
Som standard matcher backend brukere etter e-post. For å bruke sub som kontonøkkel lager du en underklasse av OIDCAuthenticationBackend og overstyrer filter_users_by_claims og create_user. Bruk en nyere utgivelse: eldre utgivelser kan ikke verifisere ES256-signaturer.
sub er parvis: den samme for alle apper i organisasjonen din, forskjellig for alle andre organisasjoner. Den endres aldri for en person, mens en e-postadresse kan endres. Lagre sub som kontonøkkel og behandle email som kontaktopplysning.
Mer for utviklere
UtviklerdokumentasjonAlle integrasjonsveiledningerHvilket som helst OpenID Connect-bibliotekPriser