
Bibliothèque Flask pour créer des fournisseurs de services et des fournisseurs d'identité SAML.
.. note:: Recherche de mainteneurs. Ce projet n'est plus maintenu. La bibliothèque fonctionne, ou fonctionnait lors de ma dernière utilisation, mais je ne travaille plus sur le projet pour lequel elle avait été créée. Si vous souhaitez reprendre la direction et la maintenance de ce projet, veuillez me contacter.
.. 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/
Ce plugin Flask fournit des fonctionnalités pour créer à la fois des fournisseurs de services (Service Providers) et des fournisseurs d'identité (Identity Providers) SAML. Les applications peuvent implémenter l'un ou l'autre de ces fournisseurs, ou les deux.
flask-saml2 fonctionne avec Flask 1.0+ et Python 3.6+.
Ceci est un fork fortement modifié de NoodleMarkets/dj-saml-idp, lui-même un fork de deforestg/dj-saml-idp, lui-même un fork de novapost/django-saml2-idp_.
Pour une description complète du fonctionnement de SAML, veuillez consulter des guides ailleurs sur Internet. Pour une introduction rapide et un aperçu de la terminologie utilisée dans ce paquet, lisez ce qui suit.
Le protocole SAML est une conversation entre deux parties : les fournisseurs d'identité (Identity Providers, IdP) et les fournisseurs de services (Service Providers, SP). Lorsqu'un client non authentifié (généralement un navigateur) accède à un fournisseur de services, celui-ci crée une requête d'authentification (AuthnRequest), la signe avec sa clé privée, puis transmet cette requête au fournisseur d'identité via le client. Une fois que le client se connecte au fournisseur d'identité central, celui-ci crée une réponse, la signe et la transmet via le client au fournisseur de services demandeur. Le client est alors authentifié auprès du fournisseur de services via le fournisseur d'identité central, sans que le fournisseur de services ait à connaître quoi que ce soit sur la méthode d'authentification ou les mots de passe utilisés.
Un exemple d'implémentation minimal mais fonctionnel d'un fournisseur de services et d'un fournisseur d'identité se trouve dans le répertoire examples/ de ce dépôt. Pour exécuter les exemples, commencez par cloner le dépôt et installer les dépendances :
.. 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
Ensuite, exécutez l'IdP et le SP dans des fenêtres de terminal distinctes :
.. 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
Enfin, rendez-vous sur http://localhost:9000/ pour accéder à la page d'accueil du fournisseur de services.
Le lanceur de tests est pytest et nous utilisons tox pour exécuter les tests avec différentes versions de Flask et Python. Les tests peuvent être exécutés localement avec tox directement (de préférence dans un environnement virtuel)::
$ pip install tox
$ tox
Distribué sous la 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