{ "info": { "author": "Tim Heap", "author_email": "tim.heap@tidetech.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Flask", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Security", "Topic :: System :: Systems Administration :: Authentication/Directory" ], "description": "flask-saml2\n===========\n\n.. image:: https://travis-ci.com/timheap/flask-saml2.svg?branch=master\n :target: https://travis-ci.com/timheap/flask-saml2\n.. image:: https://badge.fury.io/py/flask-saml2.svg\n :target: https://pypi.org/project/flask-saml2/\n.. image:: https://readthedocs.org/projects/flask-saml2/badge/?version=latest\n :target: https://flask-saml2.readthedocs.io/en/latest/\n\nThis Flask plugin provides functionality for creating both SAML Service\nProviders and Identity Providers. Applications can implement one or both of\nthese providers.\n\n``flask-saml2`` works with Flask 1.0+ and Python 3.6+.\n\nThis is a heavily modified fork of `NoodleMarkets/dj-saml-idp`_ which in turn\nis a fork of `deforestg/dj-saml-idp`_ which in turn is a fork of\n`novapost/django-saml2-idp`_.\n\nTerminology\n-----------\n\nFor a full description of how SAML works, please seek guides elsewhere on the\ninternet. For a quick introduction, and a run through of some of the\nterminology used in this package, read on.\n\nThe SAML protocal is a conversation between two parties:\n**Identity Providers (IdP)** and **Service Providers (SP)**.\nWhen an unauthenticated client (usually a browser) accesses a Service Provider,\nthe Service Provider will make an **authentication request (AuthnRequest)**,\nsign it using its private key, and then forward this request via the client to\nthe Identity Provider. Once the client logs in at the central Identity\nProvider, the Identity Provider makes a response, signs it, and forwards this\nresponse via the client to the requesting Service Provider. The client is then\nauthenticated on the Service Provider via the central Identity Provider,\nwithout the Service Provider having to know anything about the authentication\nmethod, or any passwords involved.\n\nExample implementations\n-----------------------\n\nA minimal but functional example implementation of both a Service Provider and\nan Identity Provider can be found in the ``examples/`` directory of this\nrepository. To get the examples running, first clone the repository and install\nthe dependencies:\n\n.. code-block:: console\n\n $ git clone https://github.com/timheap/flask-saml2\n $ cd flask-saml2\n $ python3 -m venv venv\n $ source venv/bin/activate\n $ pip install -e .\n $ pip install -r tests/requirements.txt\n\nNext, run the IdP and the SP in separate terminal windows:\n\n.. code-block:: console\n\n $ cd flask-saml2\n $ source venv/bin/activate\n $ ./examples/idp.py\n\n.. code-block:: console\n\n $ cd flask-saml2\n $ source venv/bin/activate\n $ ./examples/sp.py\n\nFinally, navigate to http://localhost:9000/ to access the Service Provider\nlanding page.\n\nTesting\n-------\n\nThe test runner is `pytest` and we are using `tox` to run tests against\ndifferent versions of Flask and Python. The test can be run locally using\n`tox` directly (preferably in a virtual environment)::\n\n $ pip install tox\n $ tox\n\nLicense\n-------\n\nDistributed under the `MIT License`_.\n\n.. _`NoodleMarkets/dj-saml-idp`: https://github.com/NoodleMarkets/dj-saml-idp\n.. _`deforestg/dj-saml-idp`: https://github.com/deforestg/dj-saml-idp\n.. _`novapost/django-saml2-idp`: https://github.com/novapost/django-saml2-idp\n.. _`MIT License`: https://github.com/mobify/dj-saml-idp/blob/master/LICENSE", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/timheap/flask-saml2", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flask-saml2", "package_url": "https://pypi.org/project/flask-saml2/", "platform": "", "project_url": "https://pypi.org/project/flask-saml2/", "project_urls": { "Homepage": "http://github.com/timheap/flask-saml2" }, "release_url": "https://pypi.org/project/flask-saml2/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "SAML 2.0 IdP and SP for Flask and Python 3", "version": "0.2.0" }, "last_serial": 5643346, "releases": { "0.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "a1a5a97f4cabe54a40e89d5ddb3eff85", "sha256": "ac0f8a9386827d46492f67798864cb43ee5c0dfffc965824488cb1ab67d3a440" }, "downloads": -1, "filename": "flask_saml2-0.0.1.dev1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a1a5a97f4cabe54a40e89d5ddb3eff85", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35781, "upload_time": "2018-07-06T06:46:57", "url": "https://files.pythonhosted.org/packages/7f/9e/a0aed9fa32d57cbbf4b4995cf850d6b86d039097b213036a7384043002b3/flask_saml2-0.0.1.dev1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "294dd9764e9d0940113b4285c89004fc", "sha256": "9c55972c131f42fd5ed557340252f5753453b4bc5ce68176d720b7e72bebc843" }, "downloads": -1, "filename": "flask-saml2-0.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "294dd9764e9d0940113b4285c89004fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25953, "upload_time": "2018-07-06T06:46:59", "url": "https://files.pythonhosted.org/packages/a6/49/cb270616e0978d23184cfc6943ca9ff3e3161c233a561eaa120dfe5eaca2/flask-saml2-0.0.1.dev1.tar.gz" } ], "0.0.1.dev6": [ { "comment_text": "", "digests": { "md5": "f156e3973f91b64f184fd5080fc43037", "sha256": "6da65f0de681dc71e5ca53ebea9f529dc68e153dff6cc16d35e2b3c46df703bf" }, "downloads": -1, "filename": "flask-saml2-0.0.1.dev6.tar.gz", "has_sig": false, "md5_digest": "f156e3973f91b64f184fd5080fc43037", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24262, "upload_time": "2018-07-13T05:32:18", "url": "https://files.pythonhosted.org/packages/91/71/97c506ebbdcaa8f080ad09caebadee5e62f8113f813b1267833fa76508cf/flask-saml2-0.0.1.dev6.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0aa4399d0a98617349b30dbfa4096c89", "sha256": "0fe0c19e38fa6aeb8ca8e914b315e80d9f4b024b0d6039816d1a4de17632f173" }, "downloads": -1, "filename": "flask-saml2-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0aa4399d0a98617349b30dbfa4096c89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26830, "upload_time": "2019-03-21T00:45:57", "url": "https://files.pythonhosted.org/packages/9f/39/ac26d575f20b31b0c5cb249b1d0cd4d796f804e0ac5c25deb6bff61a4ed6/flask-saml2-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "11ab9bf564d2a61cb6f02cd3d7430638", "sha256": "688d8b6ab38192ec2b5326f40b1d552ad87918b2494b4354885f6b99f0681328" }, "downloads": -1, "filename": "flask-saml2-0.2.0.tar.gz", "has_sig": false, "md5_digest": "11ab9bf564d2a61cb6f02cd3d7430638", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29249, "upload_time": "2019-08-07T06:30:47", "url": "https://files.pythonhosted.org/packages/38/35/40865842c531fb56cf7b4447655654d1624259728dbe4b9df48521ec9ec2/flask-saml2-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "11ab9bf564d2a61cb6f02cd3d7430638", "sha256": "688d8b6ab38192ec2b5326f40b1d552ad87918b2494b4354885f6b99f0681328" }, "downloads": -1, "filename": "flask-saml2-0.2.0.tar.gz", "has_sig": false, "md5_digest": "11ab9bf564d2a61cb6f02cd3d7430638", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29249, "upload_time": "2019-08-07T06:30:47", "url": "https://files.pythonhosted.org/packages/38/35/40865842c531fb56cf7b4447655654d1624259728dbe4b9df48521ec9ec2/flask-saml2-0.2.0.tar.gz" } ] }