A JSON Web Token authentication extension for the Django REST Framework.
Project description
drf_pyjwt
A JSON Web Token authentication extension for the Django REST Framework
Installation
Using pip
pip install drf_pyjwt
Using pipenv
pipenv install drf_pyjwt
Quick start
In your project’s settings.py add these settings.
DRF_PYJWT_JWKS_URI = "https://api.sample/jwks.json"
DRF_PYJWT_ALGORITHMS = ["RS256"]
DRF_PYJWT_KWARGS = {"audience": "https://api.sample"}
In views.py add PyJWTAuthentication class to authentication classes.
@api_view(["get"])
@authentication_classes([PyJWTAuthentication])
def example(request: Request) -> Response:
token: dict = request.auth
print("Access token: {token}")
return Response({"some": "response"})
By default PyJWTAuthentication cannot lookup user by token, that's why you will get None in request.user.
You can provide lookup user function using DRF_PYJWT_LOOKUP_USER setting.
After this PyJWTAuthentication will populate request.user using provided function.
Settings Reference
DRF_PYJWT_JWKS_URI
Required: True
Type: str
Value which will be passed as uri argument to jwt.jwks_client.PyJWKClient function
DRF_PYJWT_ALGORITHMS
Required: False
Type: List[str]
Default: ["RS256"]
Example: DRF_PYJWT_ALGORITHMS = "https://dev-87evx9ru.auth0.com/.well-known/jwks.json"
Value which will be passed as algorithms argument to jwt.decode function.
DRF_PYJWT_OPTIONS
Required: False
Type: dict
Example: DRF_PYJWT_OPTIONS = {"verify_exp": False}
Value which will be passed as options argument to jwt.decode function.
DRF_PYJWT_KWARGS
Required: False
Type: dict
Example: DRF_PYJWT_KWARGS = {"audience": "https://app.domain"}
Value which will be passed as **kwargs argument to jwt.decode function.
DRF_PYJWT_LOOKUP_USER
Required: False
Type: str (Import path to the Callable[[dict], Optional[AbstractBaseUser]])
Example:
def lookup_user(token: dict) -> Optional[AbstractBaseUser]:
user_id = token["custom_claim_user_id"]
user = User.objects.filter(pk=user_id).first()
return user
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file drf_pyjwt-0.0.7.tar.gz.
File metadata
- Download URL: drf_pyjwt-0.0.7.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.25.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3947c9e68ff5702d653b8aa8d89cad6f0920ba993f303dcd346e172ebd361f49
|
|
| MD5 |
9012cb08d7553b8bffb55aafcbd11152
|
|
| BLAKE2b-256 |
f58eea73e2b13fbd2dfecd7d927bbb5fe061dfd74f3ea6206c45572e6b1587b2
|
File details
Details for the file drf_pyjwt-0.0.7-py3-none-any.whl.
File metadata
- Download URL: drf_pyjwt-0.0.7-py3-none-any.whl
- Upload date:
- Size: 3.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.25.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a41f0b024a4d96f03df39117a9446861e462ba099c3028eebffcf6d8ee81aaf
|
|
| MD5 |
b7fe58fe6f8c7f9ec001c687f7ab01e2
|
|
| BLAKE2b-256 |
bdf97e7d2eb89e48331ad155e14a9d0157529bfa882511490e5936c1846a48ac
|