italia / spid-rails

SPID authentication for Ruby on Rails
MIT License
13 stars 9 forks source link

Richiesta sullo stato di salute del progetto #34

Open peppelinux opened 3 years ago

peppelinux commented 3 years ago

Ciao @descovi

Abbiamo ricevuto alcune segnalazioni da parte degli sviluppatori che ci indicano che questo repository conterrebbe risorse non allineate con lo stato attuale delle Specifiche SPID.

Spero di ottenere un tuo gentile feedback entro la prossima settimana, Grazie e a presto

descovi commented 3 years ago

Ciao @peppelinux, si ci fu un refactor ormai molti anni fa non condotto da noi di cui non abbiamo seguito effettivamente l'evoluzione. Probabilmente @davidlibrera, che ha riscritto la gemma puo darci una mano.

davidlibrera commented 2 years ago

@peppelinux

Salve, buonasera. Chiedo venia per non aver visto per un così lungo periodo la menzione ma ci sono state una serie di problematiche. Sono disponibile a qualunque chiarimento e chiedo venia nuovamente.

peppelinux commented 2 years ago

Ciao @davidlibrera

Non preoccuparti, siamo liberi contributori. Che ne pensi di aprire un repo per spid-cie-oidc-rails e tirare dentro anche @mdrew

MdreW commented 2 years ago

Ciao @davidlibrera

Non preoccuparti, siamo liberi contributori. Che ne pensi di aprire un repo per spid-cie-oidc-rails e tirare dentro anche @mdrew

Da parte mia disponibilissimo!

La libreria openid connect di Ruby al momento non supporta il federation e mi sto iniziando a studiare come modificarla. Avevo aperto una issue , ma non ho avuto risposta, lunedì passerò al fork 👍

Se si sistema la libreria dovremmo guadagnare facilmente la compatibilità con devise e omniauth.

peppelinux commented 2 years ago

Su oidc federation per RP in SPID/CIE non c'è molto da preoccuparsi, gli IDP non hanno intermediari, quindi si fa prima una chiamata a

.well-knwon/openid-federation dell'op eppoi un fetch di entity statement dal trust anchor (Agid o MinInterno) per la verifica della firma. Tutto qui.

Essendo gli IDP ben definiti all'interno della federazione si possono collezionare in una lista e aggiornare periodicamente le trust chain, con un comando schedulato. questo torna utile per la costruzione dinamica dello spid button.

qui trovate una implementazione https://github.com/italia/spid-cie-oidc-django/blob/main/docs/technical_specifications/RELYING_PARTY.md#general-settings-paramenters

peppelinux commented 2 years ago

@MdreW se volete un consiglio, prendete una libreria per creare/verificare/(de)criptare JWT/JWS/JWE

un RP sono 2 endpoint oidc standard (authz e callback), un endpoint oauth2 (revocation) e un endpoint oidc federation (.well-knwon/openid-federation)

ci vuole più tempo a modificarla una libreria che a fare 4 jwt a mano inoltre, usando una libreria SPID/CIE specializzata non andreste in conflitto usando l'altra libreria contemporaneamente se già in un progetto ci fosse una autentica oidc/oauth2

per il resto, sentitevi liberi

davidlibrera commented 2 years ago

@MdreW @peppelinux per chiarezza: l'architettura attuale è composta da 3 librerie

spid-ruby che è l'implementazione del protocollo SPID/SAML in linguaggio ruby e sopra di esse 2 librerie: una è la qui presente spid-rails mentre l'altra è spid-sinatra che altro non sono che wrapper intorno alla libreria ruby per adattarla agli specifici framework (ad esempio esiste anche hananirb che essendo potrebbe usare direttamente spid-ruby o richiedere qualcosa sopra).

Io in virtù di questo sarei propenso a sviluppare un qualcosa come spid-oidc-ruby e valutare se fare dei wrapper esterni, che ne dite?