Skip to main content

SAML 2.0 IdP and SP for Flask and Python 3

Project description

https://travis-ci.com/timheap/flask-saml2.svg?branch=master https://badge.fury.io/py/flask-saml2.svg https://readthedocs.org/projects/flask-saml2/badge/?version=latest

This Flask plugin provides functionality for creating both SAML Service Providers and Identity Providers. Applications can implement one or both of these providers.

flask-saml2 works with Flask 1.0+ and Python 3.6+.

This is a heavily modified fork of NoodleMarkets/dj-saml-idp which in turn is a fork of deforestg/dj-saml-idp which in turn is a fork of novapost/django-saml2-idp.

Terminology

For a full description of how SAML works, please seek guides elsewhere on the internet. For a quick introduction, and a run through of some of the terminology used in this package, read on.

The SAML protocal is a conversation between two parties: Identity Providers (IdP) and Service Providers (SP). When an unauthenticated client (usually a browser) accesses a Service Provider, the Service Provider will make an authentication request (AuthnRequest), sign it using its private key, and then forward this request via the client to the Identity Provider. Once the client logs in at the central Identity Provider, the Identity Provider makes a response, signs it, and forwards this response via the client to the requesting Service Provider. The client is then authenticated on the Service Provider via the central Identity Provider, without the Service Provider having to know anything about the authentication method, or any passwords involved.

Example implementations

A minimal but functional example implementation of both a Service Provider and an Identity Provider can be found in the examples/ directory of this repository. To get the examples running, first clone the repository and install the dependencies:

$ git clone https://github.com/timheap/flask-saml2
$ cd flask-saml2
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -e .
$ pip install -r tests/requirements.txt

Next, run the IdP and the SP in separate terminal windows:

$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/idp.py
$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/sp.py

Finally, navigate to http://localhost:9000/ to access the Service Provider landing page.

Testing

The test runner is pytest and we are using tox to run tests against different versions of Flask and Python. The test can be run locally using tox directly (preferably in a virtual environment):

$ pip install tox
$ tox

License

Distributed under the MIT License.

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

flask_saml2_fork-0.3.4.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flask_saml2_fork-0.3.4-py2.py3-none-any.whl (40.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file flask_saml2_fork-0.3.4.tar.gz.

File metadata

  • Download URL: flask_saml2_fork-0.3.4.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for flask_saml2_fork-0.3.4.tar.gz
Algorithm Hash digest
SHA256 281ab98da5a1e55d7576bb930aec6ee2a530d1147afbe97e537510cf593ea61e
MD5 c6469d3d19e1bb5c935f53a5cdd3ff17
BLAKE2b-256 2830f11ccac99b42cd46db665d5b96edda42c7ea7cdb0b9dca1a18db5e29ab33

See more details on using hashes here.

File details

Details for the file flask_saml2_fork-0.3.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for flask_saml2_fork-0.3.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6132fc7f3e20a429b58676dcc3aac2a6c531b00e035c6c866eaacf727558975b
MD5 f4fde0346729de9bbae977321936e95d
BLAKE2b-256 55a2167f1ea3901b2a27af33c0eb57ce3bdca9f53af849fb590d62124995e5ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page