Django Rest Framework Authentication Packages

What is this ?

I’ve found the official documentation of Django Rest Framework third-party authentication packages difficult to parse, and lacking some information I would like, so I’ve produced my own version, extending the original. I will revise this blog post until I’m satisfied and then I will submit my version as a pull request to the Django Rest Framework project for consideration as a replacement for the existing version.

DRF – Third Party Authentication Packages

Categorisation

In addition to the main table, there are extra tables showing packages grouped by :

Main Table

NameDescriptionLast Update to Repos
Django-rest-knox
[docs]

Django-rest-knox library provides models and views to handle token-based authentication in a more secure and extensible way than the built-in TokenAuthentication scheme – with Single Page Applications and Mobile clients in mind.

It provides per-client tokens, and views:

  • to generate them when provided some other authentication (usually basic authentication),
  • to delete the token (providing a server enforced logout) and
  • to delete all tokens (logs out all clients that a user is logged into).
2025-01-28
Django OAuth Toolkit
[docs]

The Django OAuth Toolkit package provides OAuth 2.0 support and works with Python 3.4+.

The package is maintained by jazzband and uses the excellent OAuthLib.

The package is well documented, and well supported and is currently the DRF project  recommended package for OAuth 2.0 support.

2025-02-25
Django REST framework OAuth
[docs]

The Django REST framework OAuth package provides both OAuth1 and OAuth2 support for DRF.

This package was previously included directly in the REST framework but is now supported and maintained as a third-party package.

2019-04-13
JSON Web Token Authentication
[docs]

JSON Web Token is a fairly new standard which can be used for token-based authentication.

Unlike the built-in TokenAuthentication scheme, JWT Authentication doesn’t need to use a database to validate a token.

A package for JWT authentication is djangorestframework-simplejwt which provides some features as well as a pluggable token blacklist app.

2025-02-21
Hawk HTTP Authentication
[docs]

The HawkREST library builds on the Mohawk library to let you work with Hawk signed requests and responses in your API.

Hawk lets two parties securely communicate with each other using messages signed by a shared key.

It is based on HTTP MAC access authentication (which was based on parts of OAuth 1.0).

2018-10-07
HTTP Signature Authentication

HTTP Signature provides a way to achieve origin authentication and message integrity for HTTP messages.


Similar to Amazon’s HTTP Signature scheme, used by many of its services, it permits stateless, per-request authentication.


Elvio Toccalino maintains the djangorestframework-httpsignature (outdated) package which provides an easy-to-use HTTP Signature Authentication mechanism. You can use the updated fork version of djangorestframework-httpsignature, which is drf-httpsig.



2018-03-29
Djoser
[docs]

Djoser library provides a set of views to handle basic actions such as registration, login, logout, password reset and account activation.

The package works with a custom user model and uses token-based authentication.

This is a ready to use REST implementation of the Django authentication system.

2024-11-11
django-rest-auth / dj-rest-auth
[docs]

This library provides a set of REST API endpoints for registration, authentication (including social media authentication), password reset, retrieve and update user details, etc.

By having these API endpoints, your client apps such as AngularJS, iOS, Android, and others can communicate to your Django backend site independently via REST APIs for user management.

2024-12-02
drf-social-oauth2
[docs]

Drf-social-oauth2 is a framework that helps you authenticate with major social oauth2 vendors, such as Facebook, Google, Twitter, Orcid, etc.

It generates tokens in a JWTed way with an easy setup.

2024-07-19
drfpasswordless
[docs]

drfpasswordless adds (Medium, Square Cash inspired) passwordless support to Django REST Framework’s TokenAuthentication scheme.

Users log in and sign up with a token sent to a contact point like an email address or a mobile number.

2023-10-23
django-rest-authemail
[docs]

django-rest-authemail provides a RESTful API interface for user signup and authentication.

Email addresses are used for authentication, rather than usernames.

API endpoints are available for signup, signup email verification, login,

2023-04-10
Django-Rest-Durin
[docs]

Django-Rest-Durin is built with the idea to have one library that does token auth for multiple Web/CLI/Mobile API clients via one interface but allows different token configuration for each API Client that consumes the API.

It provides support for multiple tokens per user via custom models, views, permissions that work with Django-Rest-Framework.

The token expiration time can be different per API client and is customizable via the Django Admin Interface.

2023-05-04

Note1: ‘Last Update to Repos’ column values are as of 26 Feb 2024.

Note2: As of 26 Feb 2024 the table above does not differ a great deal from the official document. I believe that it is easier to read but otherwise the content is very similar. In the future I will update it to include other information to make selecting a third-party DRF authentication package easier.

Packages providing support for Social Identities

  • django-rest-auth / dj-rest-auth
  • drf-social-oauth2

Packages providing OAuth capability

  • Django OAuth Toolkit
  • Django REST framework OAuth
  • drf-social-auth2

Packages by date of last update

Last UpdatePackage
2025Django-rest-knox
Django OAuth Toolkit
JSON Web Token Authentication
2024Djoser
django-rest-auth / dj-rest-auth
drf-social-oauth2
2023drfpasswordless
django-rest-authemail
Django-Rest-Durin
2019Django REST framework OAuth
2018Hawk HTTP Authentication
HTTP Signature Authentication

A note about licensing

As mentioned, the above text is based on part of the official documentation. The license under which django-rest-framework is made available doesn’t make it very clear how the documentation should be treated when re-distributed as it’s neither source code, nor binary so I hope that it’s enough to point out that : this is the license of of the django rest framework project; and the documentation is Copyright © 2011-present, Encode OSS Ltd .

Leave a Reply

Your email address will not be published. Required fields are marked *