Skip to main content

Python OpenID library - OpenID support for servers and consumers.

Project description


Build Status codecov PyPI PyPI - Python Version

Python OpenID library - OpenID support for servers and consumers.

This is a set of Python packages to support use of the OpenID decentralized identity system in your application. Want to enable single sign-on for your web site? Use the openid.consumer package. Want to run your own OpenID server? Check out openid.server. Includes example code and support for a variety of storage back-ends.


  • Python 2.7, >=3.5
  • lxml
  • six
  • cryptography


To install the base library, just run the following command:

pip install python-openid2


The examples directory includes an example server and consumer implementation. See the README file in that directory for more information on running the examples.

Library documentation is available in html form in the doc directory.


This library offers a logging hook that will record unexpected conditions that occur in library code. If a condition is recoverable, the library will recover and issue a log message. If it is not recoverable, the library will raise an exception. See the documentation for the openid.oidutil module for more on the logging hook.


The documentation in this library is in Epydoc format, which is detailed at:


Send bug reports, suggestions, comments, and questions to

If you have a bugfix or feature you'd like to contribute, don't hesitate to send it to us on GitHub.



  • Add support for python 3.8.
  • Drop support for python 3.4.
  • Fix false positive redirect error in consumer verification.
  • Do not percent escape sub delimiters in path in URI normalization. Thanks Colin Watson for report.
  • Fix tests and static code checks. Thanks Colin Watson.


  • Convert data values for extensions to text.
  • Fixes in Python 2/3 support.
  • Fix examples.
  • Add support for python 3.7
  • Fix static code checks
  • Use bumpversion


  • Support Python3.
  • Change most of the API to the text strings. UTF-8 encoded byte string should be compatible.
  • Authentication methods based on SHA-256 are now preferred over SHA-1.
  • Use cryptography library for cryptography tasks.
  • Add new base64-based API for DiffieHellman class.
  • Refactor script to negotiate association with an OpenID server.
  • Decrease log levels on repetitive logs.
  • Default fetcher is picked from more options.
  • Remove openid.consumer.html_parse module.
  • Remove hmacSha*, randomString, randrange and sha* functions from openid.cryptutil.
  • A lot of refactoring and clean up.


  • Binary strings are deprecated, unless explicitely allowed.
  • hash_func is deprecated in favor of algorithm in DiffieHellmanSHA*ServerSession and DiffieHellmanSHA*ConsumerSession.
  • DiffieHellmanSHA*ServerSession.consumer_pubkey is deprecated in favor of consumer_public_key.
  • Functions longToBinary and binaryToLong deprecated in favor of int_to_bytes and bytes_to_int, respectively.
  • Old DiffieHellman API is deprecated.


  • Prevent timing attacks on signature comparison. Thanks to Carl Howells.
  • Prevent XXE attacks.
  • Fix unicode errors. Thanks to Kai Lautaportti.
  • Drop support for python versions < 2.7.
  • Use logging module. Thanks to Attila-Mihaly Balazs.
  • Allow signatory, encoder and decoder to be set for Server. Thanks to julio.
  • Fix URL limit to server responses. Thanks to Rodrigo Primo.
  • Fix several protocol errors.
  • Add utility method to AX store extension.
  • Fix curl detection. Thanks to Sergey Shepelev.
  • Use setuptools. Thanks to Tres Seaver.
  • Refactor Message class creation.
  • Add RequestsFetcher. Thanks to Lennonka.
  • Updated examples.
  • Add tox for testing. Thanks to Marc Abramowitz.
  • Refactor tests.
  • Clean code and add static checks.


  • Message.setOpenIDNamespace() method.
  • UndefinedOpenIDNamespace exception.
  • OpenIDRequest.namespace attribute.
  • openid.extensions.draft packages, namely its pape2 and pape5 modules.

Download files

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

Source Distribution

python-openid2-3.2.tar.gz (113.9 kB view hashes)

Uploaded source

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