
Flask-Bibliothek zum Erstellen von SAML Service Providers und Identity Providers
.. note:: Betreuer gesucht. Dieses Projekt wird nicht mehr gewartet. Die Bibliothek funktioniert, oder funktionierte zumindest, als ich sie zuletzt verwendet habe, aber ich arbeite nicht mehr an dem Projekt, für das dies entwickelt wurde. Wenn Sie interessiert sind, die Leitung und Wartung dieses Projekts zu übernehmen, nehmen Sie bitte Kontakt auf.
.. image:: https://travis-ci.com/timheap/flask-saml2.svg?branch=master :target: https://travis-ci.com/timheap/flask-saml2 .. image:: https://badge.fury.io/py/flask-saml2.svg :target: https://pypi.org/project/flask-saml2/ .. image:: https://readthedocs.org/projects/flask-saml2/badge/?version=latest :target: https://flask-saml2.readthedocs.io/en/latest/
Dieses Flask-Plugin bietet Funktionalität zum Erstellen von SAML Service Providern und Identity Providern. Anwendungen können einen oder beide dieser Provider implementieren.
flask-saml2 funktioniert mit Flask 1.0+ und Python 3.6+.
Dies ist ein stark modifizierter Fork von NoodleMarkets/dj-saml-idp, der wiederum ein Fork von deforestg/dj-saml-idp ist, der wiederum ein Fork von novapost/django-saml2-idp_ ist.
Eine vollständige Beschreibung der Funktionsweise von SAML finden Sie in anderen Anleitungen im Internet. Für eine kurze Einführung und einen Überblick über einige der in diesem Paket verwendeten Begriffe lesen Sie weiter.
Das SAML-Protokoll ist eine Konversation zwischen zwei Parteien: Identity Providern (IdP) und Service Providern (SP). Wenn ein nicht authentifizierter Client (normalerweise ein Browser) auf einen Service Provider zugreift, erstellt der Service Provider eine Authentifizierungsanfrage (AuthnRequest), signiert sie mit seinem privaten Schlüssel und leitet diese Anfrage über den Client an den Identity Provider weiter. Sobald sich der Client beim zentralen Identity Provider anmeldet, erstellt der Identity Provider eine Antwort, signiert sie und leitet diese Antwort über den Client an den anfragenden Service Provider weiter. Der Client wird dann über den zentralen Identity Provider beim Service Provider authentifiziert, ohne dass der Service Provider etwas über die Authentifizierungsmethode oder die verwendeten Passwörter wissen muss.
Eine minimale, aber funktionsfähige Beispielimplementierung sowohl eines Service Providers als auch eines Identity Providers finden Sie im examples/-Verzeichnis dieses Repositories. Um die Beispiele auszuführen, klonen Sie zuerst das Repository und installieren Sie die Abhängigkeiten:
.. code-block:: console
$ 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
Führen Sie als nächstes den IdP und den SP in separaten Terminalfenstern aus:
.. code-block:: console
$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/idp.py
.. code-block:: console
$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/sp.py
Navigieren Sie schließlich zu http://localhost:9000/, um die Landing Page des Service Providers aufzurufen.
Der Testrunner ist pytest und wir verwenden tox, um Tests gegen verschiedene Versionen von Flask und Python durchzuführen. Die Tests können lokal mit tox ausgeführt werden (vorzugsweise in einer virtuellen Umgebung)::
$ pip install tox
$ tox
Verteilt unter der MIT License_.
.. _NoodleMarkets/dj-saml-idp: https://github.com/NoodleMarkets/dj-saml-idp
.. _deforestg/dj-saml-idp: https://github.com/deforestg/dj-saml-idp
.. _novapost/django-saml2-idp: https://github.com/novapost/django-saml2-idp
.. _MIT License: https://github.com/mobify/dj-saml-idp/blob/master/LICENSE