
Libreria Flask per creare Service Provider e Identity Provider SAML
.. note:: In cerca di manutentori. Questo progetto non è più mantenuto. La libreria funziona, o funzionava quando l'ho usata per l'ultima volta, ma non lavoro più al progetto per cui è stata creata. Se sei interessato a prendere la guida e la manutenzione di questo progetto, contattami.
.. 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/
Questo plugin Flask fornisce funzionalità per la creazione sia di Service Provider SAML che di Identity Provider SAML. Le applicazioni possono implementare uno o entrambi questi provider.
flask-saml2 funziona con Flask 1.0+ e Python 3.6+.
Questo è un fork pesantemente modificato di NoodleMarkets/dj-saml-idp, che a sua volta
è un fork di deforestg/dj-saml-idp, che a sua volta è un fork di
novapost/django-saml2-idp_.
Per una descrizione completa di come funziona SAML, cerca guide altrove su internet. Per una rapida introduzione e una panoramica di parte della terminologia usata in questo pacchetto, continua a leggere.
Il protocollo SAML è una conversazione tra due parti: Identity Provider (IdP) e Service Provider (SP). Quando un client non autenticato (di solito un browser) accede a un Service Provider, il Service Provider genera una richiesta di autenticazione (AuthnRequest), la firma con la sua chiave privata e inoltra questa richiesta tramite il client all'Identity Provider. Una volta che il client effettua l'accesso presso l'Identity Provider centrale, l'Identity Provider crea una risposta, la firma e inoltra questa risposta tramite il client al Service Provider richiedente. Il client viene quindi autenticato sul Service Provider tramite l'Identity Provider centrale, senza che il Service Provider debba sapere nulla del metodo di autenticazione o delle password coinvolte.
Un'implementazione di esempio minima ma funzionale sia di un Service Provider che di
un Identity Provider si trova nella directory examples/ di questo
repository. Per avviare gli esempi, clona prima il repository e installa
le dipendenze:
.. 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
Quindi, esegui l'IdP e l'SP in finestre di terminale separate:
.. 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
Infine, vai su http://localhost:9000/ per accedere alla pagina di destinazione del Service Provider.
Il runner dei test è pytest e usiamo tox per eseguire i test su
diverse versioni di Flask e Python. I test possono essere eseguiti localmente usando
tox direttamente (preferibilmente in un ambiente virtuale)::
$ pip install tox
$ tox
Distribuito sotto 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