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

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"
    
  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.3.tar.gz (9.7 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.3-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_oidc_admin-0.1.3.tar.gz
  • Upload date:
  • Size: 9.7 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.3.tar.gz
Algorithm Hash digest
SHA256 353db02a159ebdd4b983da4f9ab711be2e6b8992e7169c190d77fc52faa9b1a2
MD5 3026865ea5904adc5ca491bc8c2701c6
BLAKE2b-256 b2919137b796937ad1fa3c4d31440fb336ed6b1f7ef462c589050961960c027b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_oidc_admin-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c3e0923ca33547c88e7c423322e605e98315124f94cabc50c9546eed1e189635
MD5 cd9eebce5704b2705d1b72acaa4c458d
BLAKE2b-256 b0682ca3dc35b018794d3373e292f7a70c07c55e2777e448902f2acf3dbe1ac4

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