SPID e Webserver Embedded Twisted Python

Ciao,

per il progetto di Whistleblowing Anticorruzione Opensource GlobaLeaks www.globaleaks.org vorremmo approcciare l’integrazione di SPID, come opzione di autenticazione-identificazione Whistleblower.

GlobaLeaks però, per i suoi design goal di minimalismo e sicurezza, utilizza il webserver integrato e securizzato di Python Twisted (https://github.com/twisted/twisted) e non si appoggia ad un webserver come Apache o NGINX per la sua esecuzione come applicazione ma al suo supporti integrato https://twistedmatrix.com/documents/15.0.0/web/howto/using-twistedweb.html .

Volevo sapere se ad oggi ci sono implementazioni pure-python del supporto SPID che siano già state integrate in situazioni simili, o se c’è qualche progetto che vada in questa direzione?

Non abbiamo funding per l’implementazione SPID, non avendo un progetto specifico di una PA che lo richiede, ma ci piacerebbe effettuare l’analisi tecnologica pubblicamente e magari con un po’ di nostro impegno e un po’ di impegno di qualche opensource enthusiast, riusciamo a tirare fuori un prototipo :slight_smile:

Insomma, questo post per stimolare la raccolta di una analisi tecnologica di quali code snippets si potrebbero “assemblare” per ottenere un autenticatore SPID con un webserver pure python :slight_smile:

Reference GlobaLeaks Ticket https://github.com/globaleaks/GlobaLeaks/issues/2154

Fabio

1 Mi Piace

Ciao @fpietrosanti,
attualmente non sono stati rilasciati o in sviluppo sistemi che possano fare al caso tuo.
Posso aiutarvi a studiare la soluzione da applicare al vostro progetto?

Umberto Rosini
Agenzia per l’Italia Digitale

Ciao Fabio,

il progetto più vicino a quello che chiedi è https://github.com/italia/spid-django
(Secondo me l’ideale sarebbe fare un po’ di refactoring in modo da basare spid-django su una libreria spid-python più a basso livello, framework-independent, così da agevolare chi usa altri framework e limitare la duplicazione di codice.)

Un altro progetto pure-Python che abbiamo in Developers Italia è https://github.com/italia/spid-sp-sapspid ma ha un’architettura più ingombrante e non mi sembra quello che cerchi.

Ti segnalo anche che per parlare con gli altri sviluppatori SPID/Python c’è https://slack.developers.italia.it

Ci vediamo a FOSDEM :slight_smile:

1 Mi Piace

E’ troppo oneroso modificare quello su spid-django, l’ideale è proprio creare un oggetto più a basso livello e sono daccordissimo con te, che faccia al caso loro visto l’utilizzo di Python Twisted. Adesso c’è anche il problema di pysaml2 (https://twitter.com/AlecMuffett/status/950699975767482370). Comunque l’ottimo progetto di Hermes potrebbe essere un’ottima scusa per avviare uno sviluppo…

:slight_smile:

P.S. ci vediamo a FOSDEM :smiley:

Umberto Rosini
Agenzia per l’Italia Digitale

1 Mi Piace

Allora, vedo che Twisted ha un suo framework per l’authentication che è Twisted.Cred che ha vari moduli:
http://twistedmatrix.com/documents/8.0.0/api/twisted.cred.checkers.html

E qui c’è un esempio di modulo oauth2 per Twisted:

Da approfondire!

p.s. A Fosdem mules & frites per tutti!! :slight_smile:

Ciao @fpietrosanti,
visto che supporta OAuth potete approfondire se OpenID Connect sarebbe supportabile e comunque a naso penso sia, a questo punto, meglio aspettare che rilascio la modalità di implementazione SPID con OpenID Connect di cui sto discutendo sul tavolo tecnico.

Umberto Rosini
Agenzia per l’Italia Digitale

ahhhhhh interessante OpenID Connect http://openid.net/connect/ .

Nella ipotesi-scenario che SPID fosse “fruibile” anche tramite protocollo OpenID Connect, qualunque applicazione OpenID-Connect-enabled, con 2 configurazioni, sarebbe già SPID compliant?

Si, comunque da veloce ricerca, direi che sarebbe fattibile / più facile da implementare!

Ciao @fpietrosanti,
non so se una soluzione già openid-connect-enabled sarà compliant perchè su openidConnect c’è comunque un profilo da applicare però sicuramente sarà passi avanti in confronto ad una soluzione da svilupparsi completamente.

Umberto Rosini
Agenzia per l’Italia Digitale

1 Mi Piace

Ciao,

giusto per chi capitasse su questo post, sappiate che il bug segnalato da @umbros su pysaml2 e’ stato fissato. More info:

Ciao,
Davide

A questo punto sarebbe meraviglioso se qualcuno volesse-potesse implementare nel framework di autenticazione di Twisted SPID con PySAML2 :slight_smile:

Ci vorrebbe qualche open-tenders per implementare in tutti i framework principali il supporto SPID in modo che sia solo da attivare-configurare nella integrazione applicativa!

Ciao @fpietrosanti

Sto introducendomi in SPID con django e pySAML2. Con l’aiuto di spid-testenv2 ho realizzato una risorsa metadata conforme alle specifiche tecniche di SPID. Questa la trovi di seguito, tengo inoltre a precisare che questi esempi sono per l’appunto dei semplici esempi, il codice vuole essere il più orizzontale e semplice da leggere ed interpretare.

E inoltre l’authnRequest che ho praticamente costruito a mano. Penso che questo possa essere codice utile per capire come integrare a basso livello pySAML2. Questo codice lo trovi qui:

In merito alle patch e ad alcuni aspetti di quanto ho scritto, rimando alle issue riguardanti alcuni dubbi sulla adesione di SPID agli standard OASIS. Queste le trovi qui: