italia / spid-django

SPID authentication for Django
Apache License 2.0
42 stars 20 forks source link

adottare PySAML2 #5

Closed fmarco closed 3 years ago

fmarco commented 6 years ago

Valutare il passaggio a PySAML2 per migliorare la robustezza del codice e gestire tutti i casi possibili ovviando ai limiti imposti dalle librerie di Onelogin. Eventualmente in futuro potrebbe aver senso implementare una libreria python esterna, in modo che ogni libreria basata su python (o framework python) possa accedere a del codice comune, testato e funzionante.

peppelinux commented 6 years ago

Ciao Marco, non sò se può interessare quanto ho già implementato con pysaml2 e django, parlo di un SP federato con uno Shibboleth IDP di test:

https://github.com/peppelinux/Django-Identity/tree/master/djangosaml2_sp/djangosaml2_sp

Il setup di Shibboleth IDP lo trovi "ansibilizzato" di seguito: https://github.com/peppelinux/Ansible-Shibboleth-IDP-SP-Debian9

Sicuramente dovrò mandare in produzione qualche SP Spid prima o poi, tutto quello che emergerà da questo thread potrebbe risultare spendibile per l'imminente futuro, ovviamente parteciperò al riuso.

Grazie per l'ottimo lavoro

fmarco commented 6 years ago

@peppelinux Ciao,

grazie, appena posso do un'occhiata :)!

peppelinux commented 5 years ago

riporto qui aggiornamenti, ho federato djangosaml2 con spid-testenv2, purtroppo i metodi ordinari di pysaml2 non funzionano con spid e per utilizzare pysaml2 in questo contesto ho dovuto costruire più a basso livello i metadati, la authn request e il logout request.

Un esempio è qui: https://github.com/peppelinux/Django-Identity/tree/master/djangosaml2_sp/djangosaml2_sp/djangosaml2_spid

peppelinux commented 3 years ago

Ciao @fmarco,

Ho da poco aggiornato il repository https://github.com/peppelinux/djangosaml2_spid

Nello specifico ho introdotto un costruttore automatico dei contatti, così da ottenere i requisiti esposti nell 'Avviso 29 v3 di Agid. Questa è la parte interessante: https://github.com/peppelinux/djangosaml2_spid/blob/0910d51df3aa8f230f6ac1c8b96a3b69d6544b36/src/djangosaml2_spid/settings.py#L26

fmarco commented 3 years ago

ottimo lavoro @peppelinux. Secondo te si riesce a mettere la logica base (che al momento vive in forme simili su progetti diversi) dentro una libreria python in modo da usarla laddove sia utile? In caso mi piacerebbe dare una mano.

peppelinux commented 3 years ago

I Will asap, Soprattutto unit test, sentiti libero di forkare, io i PR li accetto senza troppi problemi 😉

peppelinux commented 3 years ago

Entro mezzogiorno creerò un branch "legacy" dove spostare l'attuale master branch e pusho djangosaml2_spid con un example project