Skip to main content

Custom Microsoft Entra ID Authentication Backend for Django.

Project description

django-epfl-entra-id

Test Status Coverage Status PyPI version

Custom Microsoft Entra ID Authentication Backend for Django.

Requirements

  • Python 3.6 or later
  • Django 1.11, 2.2, 3.2 or 4.2

Installation

pip install django-epfl-entra-id

Documentation

Settings

Add 'mozilla_django_oidc' to INSTALLED_APPS:

INSTALLED_APPS = [
  ...
  'django.contrib.auth',
  'mozilla_django_oidc',  # Load after auth
  ...
]

Add django_epfl_entra_id authentication backend:

AUTHENTICATION_BACKENDS = ("django_epfl_entra_id.auth.EPFLOIDCAB",)

Register your application in the App Portal and add the OIDC configuration:

TENANT_ID = os.environ["TENANT_ID"]

OIDC_RP_CLIENT_ID = os.environ["OIDC_RP_CLIENT_ID"]
OIDC_RP_CLIENT_SECRET = os.environ["OIDC_RP_CLIENT_SECRET"]

AUTH_DOMAIN = f"https://login.microsoftonline.com/{TENANT_ID}"
OIDC_OP_AUTHORIZATION_ENDPOINT = f"{AUTH_DOMAIN}/oauth2/v2.0/authorize"
OIDC_OP_TOKEN_ENDPOINT = f"{AUTH_DOMAIN}/oauth2/v2.0/token"
OIDC_OP_JWKS_ENDPOINT = f"{AUTH_DOMAIN}/discovery/v2.0/keys"
OIDC_OP_USER_ENDPOINT = "https://graph.microsoft.com/oidc/userinfo"
OIDC_RP_SIGN_ALGO = "RS256"

LOGIN_URL = '/auth/authenticate'
LOGIN_REDIRECT_URL = "/"
LOGOUT_REDIRECT_URL = "/"

Routing

Edit your urls.py and add the following:

urlpatterns += path("", include('django-epfl-entra.urls')),
urlpatterns += re_path(r'^auth/', include('mozilla_django_oidc.urls')),

Example template:

{% if user.is_authenticated %}
  <p>Current user: {{ user.username }}</p>
  <form action="{% url 'oidc_logout' %}" method="post">
    {% csrf_token %}
    <input type="submit" value="logout">
  </form>
{% else %}
  <a href="{% url 'oidc_authentication_init' %}?next={{ request.path }}">
    Login
  </a>
{% endif %}

Optional configuration

AUTH_PROFILE_MODULE = "userprofile.UserProfile"

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_epfl_entra_id-0.0.3.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

django_epfl_entra_id-0.0.3-py2.py3-none-any.whl (8.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django_epfl_entra_id-0.0.3.tar.gz.

File metadata

  • Download URL: django_epfl_entra_id-0.0.3.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for django_epfl_entra_id-0.0.3.tar.gz
Algorithm Hash digest
SHA256 da9e426b1c6632f4629ca5c08561699d230e60f8a69ac8b3bf806853d024954b
MD5 d60473fd98856043326120ae8f751fa8
BLAKE2b-256 ecc57e95b5c5e5fd4da8e462331308906d0c69bc18605224e5098774dadfd131

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_epfl_entra_id-0.0.3.tar.gz:

Publisher: release.yml on epfl-si/django-epfl-entra-id

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_epfl_entra_id-0.0.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_epfl_entra_id-0.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 575e10c9896ab919ec6addfe3ba9b19651903bebaa9d2e173c349cae35e81994
MD5 4d876a385aeed134aa2eb3f9fb2835ff
BLAKE2b-256 043cfe4e7e3787b94f693c8df780ba3a9e208ea2f20d082e8ba19e0991cb6650

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_epfl_entra_id-0.0.3-py2.py3-none-any.whl:

Publisher: release.yml on epfl-si/django-epfl-entra-id

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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