Skip to main content

A Django sso login based on django-mozilla-oidc that creates an inactive user upon SSO login.

Project description

Django OIDC Addmin

PyPI version

django-oidc-admin is a Django app that adds a custom login button to the Django admin login page using django-mozilla-oidc. It does not allow direct authentication on the first SSO login but instead creates an inactive user. The administrator must activate the user in the Django admin interface.

After activation, the user can log in using the SSO login button.

Quick Start

  1. Add django_oidc_admin" to your INSTALLED_APPS setting.
    It must be before "django.contrib.admin".

    INSTALLED_APPS = [
        ...,
        "django_oidc_admin",
        "django.contrib.admin",
        ...,
    ]
    
  2. Add the following settings to your settings.py file:

    # Required settings
    AUTHENTICATION_BACKENDS = (
        "django_oidc_admin.authentication.DjangoOIDCAdminBackend",  # Authentication OIDC
        "django.contrib.auth.backends.ModelBackend",  # Classic authentication
    )
    
    # Add the admin_navbar context processor to templates settings
    TEMPLATES = [
        {
            "DIRS": [],
            "APP_DIRS": True,
            "OPTIONS": {
                "context_processors": [
                    "django_oidc_admin.context_processors.admin_navbar",
                ],
            },
        },
    ]
    
    # Mozilla Django OIDC mandatory settings
    OIDC_RP_CLIENT_ID = os.environ["OIDC_RP_CLIENT_ID"]
    OIDC_RP_CLIENT_SECRET = os.environ["OIDC_RP_CLIENT_SECRET"]
    OIDC_RP_SCOPES = "openid email profile"
    OIDC_OP_AUTHORIZATION_ENDPOINT = os.environ["OIDC_OP_AUTHORIZATION_ENDPOINT"]
    OIDC_OP_TOKEN_ENDPOINT = os.environ["OIDC_OP_TOKEN_ENDPOINT"]
    OIDC_OP_USER_ENDPOINT = os.environ["OIDC_OP_USER_ENDPOINT"]
    OIDC_OP_JWKS_ENDPOINT = os.environ["OIDC_OP_JWKS_ENDPOINT"]
    OIDC_RP_SIGN_ALGO = os.environ.get("OIDC_RP_SIGN_ALGO", "RS256")
    
    # Not mandatory, but if needed, to add the user in a group (group will be created if not existing)
    DOIDCADMIN_NEW_USER_GROUP_NAME = "users"
    # Custom settings
    LOGIN_REDIRECT_URL = "admin:index"
    # The login will fail as the user is not automatically set to active, we need to redirect to the admin.
    LOGIN_REDIRECT_URL_FAILURE = "admin:index" 
    
    # Override the OIDC callback class to use the custom one
    OIDC_CALLBACK_CLASS = "django_oidc_admin.authentication.DjangoOIDCAdminCallbackView"
    
    # Optional : override to use a custom User model list view
    OIDCADMIN_USER_LIST_URL_NAME = "admin:auth_user_changelist"
    
  3. Include the app's URL configuration in urls.py:

    from django.urls import path, include
    
    urlpatterns = [
        path("oidc/", include("django_oidc_admin.urls")),
    ]
    
  4. Start the development server and visit the admin login page to test the SSO login button.

License

See the LICENSE file for license rights and limitations (MIT).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_oidc_admin-0.1.4.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_oidc_admin-0.1.4-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file django_oidc_admin-0.1.4.tar.gz.

File metadata

  • Download URL: django_oidc_admin-0.1.4.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for django_oidc_admin-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d76796e043d6538af7e8022988fcd5653f4d57c638d927aa8f0cdcd8c9b40192
MD5 130bf6b45c616739f307bd58563f41a3
BLAKE2b-256 d00f548d2a56a65a76bd56e2e2f5d3433542bf1790560085a79eb05548235bf2

See more details on using hashes here.

File details

Details for the file django_oidc_admin-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for django_oidc_admin-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e51d960e8b54708bd994018b79b1a784892f26a17297a4fb77fd222b24ac8243
MD5 b7a61f9d263f3e4e982f8d4c3dd1f5cf
BLAKE2b-256 c6d18c252e7e52a46ee08f71a482552e82fe716c721b157af5ba8056b6e5d856

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page