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
- Install the package using pip:
pip install dj-jwt-auth
- Add "django_jwt" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = [
...
"django_jwt",
]
- 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
Release history Release notifications | RSS feed
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.1.tar.gz
(11.6 kB
view details)
Built Distribution
File details
Details for the file dj_jwt_auth-1.7.1.tar.gz
.
File metadata
- Download URL: dj_jwt_auth-1.7.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d22dd2e0ab191ce87146f922a340b1bf26773f91bb8158be8b4ed0c7fde53e0 |
|
MD5 | b0e04efc8190d607246a2e11b92fe8a9 |
|
BLAKE2b-256 | 6fdd619f18d476a8db9ec7f1e39845720fb786b4ca470248cf27f0d55e7110d6 |
File details
Details for the file dj_jwt_auth-1.7.1-py3-none-any.whl
.
File metadata
- Download URL: dj_jwt_auth-1.7.1-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37c878752b56b43047ed69eb236e402e37ecd5e7820aa0f4834197fcd9a74f3e |
|
MD5 | 465a1c7a1b8c9a467906e000e403a663 |
|
BLAKE2b-256 | 7623b5294a300d9193be084e4ea3e83ae905ecbc831360f645511d2164ad6b49 |