lscorcia / keycloak-cns-authenticator Goto Github PK
View Code? Open in Web Editor NEWKeycloak (https://www.keycloak.org/) custom authenticator for the Italian Carta Nazionale dei Servizi (CNS)
License: Apache License 2.0
Keycloak (https://www.keycloak.org/) custom authenticator for the Italian Carta Nazionale dei Servizi (CNS)
License: Apache License 2.0
Ciao,
ho installato l'autenticatore CNS sulla mia istanza 15.0.2 di Keycloak e sono riuscito ad effettuare correttamente l'autenticazione utilizzando un client SAML.
Sia le AuthnRequest sia le LogoutRequest SAML vengono correttamente processate da Keycloak e la CNS viene correttamente riconosciuta.
Il problema che ho riscontrato è che, rimuovendo la smart-card dal lettore a seguito di un logout e tentando un nuovo login, Keycloak riutilizza il precedente certificato, nonostante non vi sia più alcune smart-card inserita.
Per approfondire, ho tracciato in debug l'esecuzione dell'authenticator e ho verificato che al secondo giro di autenticazione, a seguito dell'estrazione della CNS dal lettore, nella HttpRequest in effetti risulta ancora presente il certificato della smart-card.
Preciso che ho definito un flusso di autenticazione custom per questo client SAML, in cui ho inserito solo una "execution" di tipo "CNS X509/Validate Username Form" impostata come "REQUIRED".
Aggiungo che sto utilizzando un server Apache 2.4 che realizza il canale TLSv1.2 con richiesta di certificato client e proxa poi in AJP verso Keycloak (JBoss/Wildfly).
Stavo pensando che il problema potrebbe essere legato al server Apache che fornisce a Keycloak lo stesso certificato dopo averlo inserito nella SSLSessionCache al primo giro di autenticazione. Chiudendo il browser e ripartendo da capo però il problema scompare e l'assenza della smart-card impedisce l'autenticazione.
Mi chiedevo se fossi a conoscenza di un modo per evitare questo inconveniente anche senza chiudere il browser.
Grazie per qualunque supporto!
Ciao anche qui,
premettiamo che anche qui si tratta di una question!
A quanto abbiamo capito sia leggendo il modulo in php disponibile qui:
sia quello scritto da te abbiamo capito che il certificato letto da cie e cns viene estratto e controllato localmente al server , nel nostro caso keycloak , senza ulteriori verifiche di terze parti. Una volta passati i controlli, vengono usati i dettagli del subject presenti sul certificato, è corretto?
Noi abbiamo compilato e deployato senza problemi il modulo cns-authenticator , ma abbiamo dubbi per capire come usarlo ; La versione utilizzata è keycloak 11 e non il 12,come consigliato da te , ma potremmo provare il 12 se secondo te abbiamo configurato le form sotto in modo corretto.
Precedentemente per la parte CNS abbiamo usato i componenti X509 keycloak di default, per l’autenticazione da parte di dipendenti su un db su cui siamo owner.
L’auth flow di massima è quello nell’immagine sotto, nella parte configuration mi sono limitato ad estrarre parte del subject (il CF) ed a confrontarla con un campo CF specifico dello user presente sul db interno di keycloak, se i campi coincidono, permetto l’accesso all’utente.
Abbiamo provato a impostare un flusso simile usando il modulo da te fornito, stiamo facendo bene? Ci potresti fornire delle indicazioni di massima? 😊 Che configuration ci suggerisci di adottare riguardo all’ultima riga dell’immagine sotto?
Una volta arrivati alla pagina di login, usando un client embedded (client id : account) , abbiamo la seguente schermata:
Cliccando su “try another way”:
Usando la seconda opzione torno sempre ad una schermata dove mi chiede user e pass, non il popup del certificato della cns che ho inserito, non so se sia dovuto al fatto che non ho ancora testato con una applicazione esterna o qualche configurazione inesatta che ho fatto!
La domanda più importante è: dove sbagliamo? :O
Ti ringraziamo in anticipo anche su questo modulo!
Ciao,
complimenti per il lavoro eccellente sui plugin per keycloak!
Stiamo cercando di implementare un'istanza di keycloak che supporti l'autenticazione a mezzo SPID, CIE e anche CNS; a causa della compatibilità con il plugin SPID e CIE la versione più recente che possiamo utilizzare di keycloak è la 20, su cui però non stiamo riuscendo a utilizzare questo plugin per la CNS.
Per caso è previsto qualche intervento al riguardo?
Grazie
Any chance you could include the standalone-ha.xml configuration file you are using for the X509 config? Once I migrated from keycloak 11.* and began going down the path of writing my own custom code, I can't get chrome to prompt for the certificate. I believe it is due to my standalone-ha.xml configuration. Any chance you could share your's?
Thanks in advance!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.