Skip to main content

SAML 2.0 IdP and SP for Flask and Python 3

Project description

https://travis-ci.org/timheap/flask-saml2.svg?branch=master

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 .

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-0.0.1.dev1.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

flask_saml2-0.0.1.dev1-py2.py3-none-any.whl (35.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flask-saml2-0.0.1.dev1.tar.gz.

File metadata

File hashes

Hashes for flask-saml2-0.0.1.dev1.tar.gz
Algorithm Hash digest
SHA256 9c55972c131f42fd5ed557340252f5753453b4bc5ce68176d720b7e72bebc843
MD5 294dd9764e9d0940113b4285c89004fc
BLAKE2b-256 a649cb270616e0978d23184cfc6943ca9ff3e3161c233a561eaa120dfe5eaca2

See more details on using hashes here.

File details

Details for the file flask_saml2-0.0.1.dev1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for flask_saml2-0.0.1.dev1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ac0f8a9386827d46492f67798864cb43ee5c0dfffc965824488cb1ab67d3a440
MD5 a1a5a97f4cabe54a40e89d5ddb3eff85
BLAKE2b-256 7f9ea0aed9fa32d57cbbf4b4995cf850d6b86d039097b213036a7384043002b3

See more details on using hashes here.

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