Python Authentication Libraries

Authentication determines whether someone or something is who or what it says. Authentication technology provides access control for systems by checking to see if a user’s credentials match the credentials in a database of authorized users or a data authentication server. In doing this, authentication assures secure systems, processes, and enterprise information security. Two very commonly used types of authentication are Oauth and JSON Web Token. OAuth essentially allows the user to give another website/service a limited access authentication token for authorization to additional resources via an authentication provider with which they have previously successfully authenticated. JSON Web Token is a technique for creating data with optional signature and encryption whose payload holds JSON that asserts some number of claims. The tokens are signed using a private secret or a public/private key. Python has several libraries to help with authentication. These libraries are discussed here.

Python authlib

The ultimate Python library in building OAuth and OpenID Connect servers. It is designed from low-level specifications implementations to high-level framework integrations to meet the needs of everyone. https://authlib.org/

Django allauth

Django-allauth is a reusable Django app that allows for both local and social authentication with flows that work. https://www.intenct.nl/projects/django-allauth/

  • Signup of both local and social accounts
  • Connecting more than one social account to a local account
  • Disconnecting a social account – requires setting a password if only the local account remains
  • Optional instant signup for social accounts – no questions asked
  • E-mail address management (multiple e-mail addresses, setting a primary)
  • Password forgotten flow
  • E-mail address verification flow

Django OAuth toolkit

Django OAuth Toolkit can help you by providing all the endpoints, data, and logic needed to add OAuth2 capabilities to your Django projects. Django OAuth Toolkit extensively uses the excellent OAuthLib so that everything is RFC-compliant. https://django-oauth-toolkit.readthedocs.io/

Python OAuth lib

OAuthLib is a framework that implements the logic of OAuth1 or OAuth2 without assuming a specific HTTP request object or web framework. Use it to graft OAuth client support onto your favorite HTTP library, or provide support to your favorite web framework. If you’re a maintainer of such a library, write a thin veneer on top of OAuthLib and get OAuth support for minimal effort. https://oauthlib.readthedocs.io/

Python oauth2

A thoroughly tested, abstract interface for creating OAuth clients and servers. https://github.com/joestump/python-oauth2

Python social-auth

Python Social Auth aims to be an easy-to-setup social authentication and authorization mechanism for Python projects supporting protocols like OAuth (1 and 2), OpenID, and others. The initial codebase is derived from Django-social-auth with the idea of generalizing the process to suit the different frameworks, providing the needed tools to support new frameworks. https://python-social-auth.readthedocs.io/

Python pyjwt

PyJWT is a Python library that allows you to encode and decode JSON Web Tokens (JWT). JWT is an open industry standard (RFC 7519) for representing claims securely between two parties. https://pyjwt.readthedocs.io/

Python Jose

The JavaScript Object Signing and Encryption (JOSE) technologies – JSON Web Signature (JWS), JSON Web Encryption (JWE), JSON Web Key (JWK), and JSON Web Algorithms (JWA) – collectively can be used to encrypt and sign content using a variety of algorithms. While the complete set of permutations is extensive and might be daunting to some, it is expected that most applications will only use a small group of algorithms to meet their needs. https://python-jose.readthedocs.io/

Python Jwt

This is a Python module for generating and verifying JSON Web Tokens. https://github.com/davedoesdev/python-jwt