Skip to main content

Django library that implements the authentification for OpenId SSO with JWT from oauth2.

Project description

django-jwt

Django library that implements the authentification for OpenId SSO with JWT from oauth2. This authentification is compatible with django session workflow and the RestFramework library.

Django [WIP]

This is what you need to do in order that your Django application will authenticate with JWT.

RestFramework

This settings are for views inherits RestFramework library from Django. You will need to install RestFramework on your own to your app first

View setting

You can add this to your APIviews class by adding JWTTokenAuthentication to authentification_classes attribute. In this example, the view requires that all requests must have JWT Bearer Authentication.

from rest_framework import permissions, views
from django_jwt import JWTTokenAuthentication


class ExampleAPIView(view.APIView):
    authentication_classes = [JWTTokenAuthentication]
    permission_classes = [permissions.IsAuthenticated]

Global setting

If all your application can work with JWT Bearer Authentication you can add the JWTTokenAuthentication class to DEFAULT_AUTHENTICATION_CLASSES setting on settings.py of your app.

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'django_jwt.rest_framework.JWTTokenAuthentication',
    ]
}

Settings

JWT_OPENID2_URL

The openid service url without the /.well-known/openid-configuration path.

JWT_OPENID2_URL = 'https://localhost:8000'

Developing only: If this setting is set to 'fake', it will deploy a fake openid service, you will need to inlcude the 'django_jwt.urls' on your urls.py and also set DEFAULT_DOMAIN to your app domain.

JWT_RENAME_ATTRIBUTES

Dictionary to redirect the data and the sub attribute into the User attributes.

JWT_RENAME_ATTRIBUTES = {'sub': 'username'}

JWT_CREATE_USER

Boolean that creates a Django user by default if the user doesn't exists if set to True.

JWT_CREATE_USER = True

You can also change the creation method of the QuerysetManager of the User model in order to customize this.

class UserQueryset(QuerySet):
    def get_or_create(self, defaults=None, **kwargs):
        ...

class User(AbstractBaseUser):
    objects = UserQueryset.as_manager()
    ...
    

JWT_DEFAULT_ATTRIBUTES

Dictionary that sets default values to new Users created. This example sets the all the attibutes of users created by the library auto_created to True.

JWT_DEFAULT_ATTRIBUTES = {'auto_created': True}

You can also modify attributes like adding something to the value creating a change_[attribute_name] method on the User model.

class User(AbstractBaseUser):
    def change_username(self, value):
        return value + '@jwt'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

django_jwt_oidc-0.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file django_jwt_oidc-0.1-py3-none-any.whl.

File metadata

  • Download URL: django_jwt_oidc-0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for django_jwt_oidc-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 91d5e89db92357a5825d07969c49fb376142aeb5a6fa5ead7798d0c7c4ee45e4
MD5 bf6c84355d8f12c7ce8dc1cbd7d7f65f
BLAKE2b-256 3cf05002b3ed0634eff638de3e13e52c0b0add0f20a4df590970b5becdcf272f

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