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_ISSUER and OIDC_ADMIN_CLIENT_ID to settings.
- OIDC_ADMIN_ISSUER - for admin-panel access through OIDC. By default will be used 'ES256' from OIDC_CONFIG_ROUTES. Example: 
OIDC_ADMIN_ISSUER = "https://keyCloak/realms/h/.well-known/openid-configuration"
- OIDC_ADMIN_CLIENT_ID - by default "complete-anatomy"
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.7.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

dj_jwt_auth-1.7.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dj_jwt_auth-1.7.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for dj_jwt_auth-1.7.0.tar.gz
Algorithm Hash digest
SHA256 494d790d7ac5fd4493be1d0c35de392045baa4730d5216454831d81bd40639a4
MD5 5d807307e6550046d8062e009d56219e
BLAKE2b-256 2be0718285133555f282f86289773a8caceecac22a6c160363df73f236cb8fea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dj_jwt_auth-1.7.0-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for dj_jwt_auth-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3aacd5f71b6eedda590f731eae718b75f0a153338d1b0273dc54d94abc64864c
MD5 4c555f1c052c891e78d363fab5fff231
BLAKE2b-256 1ee1dffa4169b6110f06404d709dfb5976228902b02176d2cdacc7671a2fc785

See more details on using hashes here.

Supported by

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