Skip to main content

A Django package for JSON Web Token validation and verification. Using PyJWT.

Project description

Django-JWT

This is a package to verify and validate JSON Web Tokens (JWT) in Django.

Installation

  1. Install the package using pip:
    pip install dj-jwt-auth
  1. Add "django_jwt" to your INSTALLED_APPS setting like this::
    INSTALLED_APPS = [
        ...
        "django_jwt",
    ]
  1. Add "django_jwt.middleware.JWTAuthMiddleware" to your MIDDLEWARE setting like this::
    MIDDLEWARE = [
        ...
        "django_jwt.middleware.JWTAuthMiddleware",
    ]

Configuration:

Required variables:

  • OIDC_CONFIG_ROUTES - dict of "algorithm": "config_url". Required for using JWTAuthMiddleware. Example:
   OIDC_CONFIG_ROUTES = {
       "RS256": "https://keyCloak/realms/h/.well-known/openid-configuration",
       "HS256": "https://keyCloak/realms/h/.well-known/openid-configuration",
   } 

Optional variables:

  • OIDC_AUDIENCE - by default ["account", "broker"]

User retated variables:

  • OIDC_USER_UPDATE - if True, user model will be updated from userinfo endpoint if MODIFIED date has changed, by default True
  • OIDC_USER_MODIFIED_FIELD - user model field to store last modified date, by default modified_timestamp
  • OIDC_TOKEN_MODIFIED_FIELD - access token field to store last modified date, by default updated_at
  • OIDC_USER_UID - User model" unique identifier, by default kc_id
  • OIDC_TOKEN_USER_UID - access token field to store user UID, by default sub
  • OIDC_USER_MAPPING - mapping between JWT claims and user model fields. Can be dict or function. By default:
    OIDC_USER_MAPPING = {
        "given_name": "first_name",
        "family_name": "last_name",
        "name": "username",
    }

OR

    def OIDC_USER_MAPPING(userinfo):
        return {
            "first_name": userinfo.get("given_name"),
            "last_name": userinfo.get("family_name"),
            "username": userinfo.get("name"),
        }
- OIDC_USER_DEFAULTS - default values for user model fields, by default:
OIDC_USER_DEFAULTS = {
    "is_active": True,
}

- OIDC_USER_ON_CREATE and OIDC_USER_ON_UPDATE - functions to be called on user creation and update, by default:
OIDC_USER_ON_CREATE = None
OIDC_USER_ON_UPDATE = None
These functions should accept two arguments: user and request.

### Admin panel integration:
To integrate admin panel with OIDC, add OIDC_ADMIN_CLIENT_ID to settings. Example:
- OIDC_ADMIN_CLIENT_ID - by default "complete-anatomy"
By default will be used 'ES256' from OIDC_CONFIG_ROUTES as Issuer.
To mapping roles to admin panel permissions, use OIDC_ADMIN_ROLES. Example:

```python

from django_jwt.roles import ROLE

OIDC_ADMIN_ROLES = [
    ROLE(
        name="admin",  # name from token
        is_superuser=True,
    ),
    ROLE(
        name="staff",
        groups=["LMS (Full)", "Organizations (Full)", "Customer Support (Full)"],
        permissions=["Can add user"],
    ),
]

And add login view to urls.py:

urlpatterns = [
    path("admin/", include("django_jwt.urls")),
    ...
]

Login URL will be available at /admin/oidc/.

Testing:

Run command python runtests.py to run tests.

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

dj_jwt_auth-1.10.2.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

dj_jwt_auth-1.10.2-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file dj_jwt_auth-1.10.2.tar.gz.

File metadata

  • Download URL: dj_jwt_auth-1.10.2.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dj_jwt_auth-1.10.2.tar.gz
Algorithm Hash digest
SHA256 5af28d9604c1259acae9d14a17504116e0f496135aadb1fa26129aed48108cba
MD5 c1a4f0e6677c72bd39d56704cfd0e88b
BLAKE2b-256 da0b916a5f60fcba053871836637325732577765dcca0d9beaa7443484d17a8b

See more details on using hashes here.

File details

Details for the file dj_jwt_auth-1.10.2-py3-none-any.whl.

File metadata

  • Download URL: dj_jwt_auth-1.10.2-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dj_jwt_auth-1.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5c60488275a2f884cb2f9c471c0e0990125725bd68de183172d22dc965970f52
MD5 0b8b48386ada55e8350178270e21c4ad
BLAKE2b-256 d449eab11d537ffababcd4b1f6fec2e761b9a2d98db7e5bd1107bd2474b29a82

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