Django OAuth Toolkit
OAuth2 goodies for the Djangonauts!
- If you are facing one or more of the following:
- Your Django app exposes a web API you want to protect with OAuth2 authentication,
- You need to implement an OAuth2 authorization server to provide tokens management for your infrastructure,
Django OAuth Toolkit can help you providing out of the box all the endpoints, data and logic needed to add OAuth2 capabilities to your Django projects. Django OAuth Toolkit makes extensive use of the excellent OAuthLib, so that everything is rfc-compliant.
Note: If you have issues installing Django 4.0.0, it is because we only support Django 4.0.1+ due to a regression in Django 4.0.0. Besides 4.0.0, Django 2.2+ is supported. Explanation.
Reporting security issues
Please report any security issues to the JazzBand security team at <email@example.com>. Do not file an issue on the tracker.
- Python 3.7+
- Django 2.2, 3.2, or >=4.0.1
- oauthlib 3.1+
Install with pip:
pip install django-oauth-toolkit
Add oauth2_provider to your INSTALLED_APPS
INSTALLED_APPS = ( ... 'oauth2_provider', )
If you need an OAuth2 provider you'll want to add the following to your urls.py. Notice that oauth2_provider namespace is mandatory.
urlpatterns = [ ... path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')), ]
The full documentation is on Read the Docs.
django-oauth-toolkit is released under the terms of the BSD license. Full details in
We need help maintaining and enhancing django-oauth-toolkit (DOT).
Join the team
How you can help
Submit PRs and Perform Reviews
PR submissions and reviews are always appreciated! Since we require an independent review of any PR before it can be merged, having your second set of eyes looking at PRs is extremely valuable.
Please don’t merge PRs
Please be aware that we don’t want every Jazzband member to merge PRs but just a handful of project team members so that we can maintain a modicum of control over what goes into a release of this security oriented code base. Only project leads are able to publish releases to Pypi and it becomes difficult when creating a new release for the leads to deal with “unexpected” merged PRs.
Become a Project Lead
If you are interested in stepping up to be a Project Lead, please join the discussion.