Ambiente di test ed integrazione CIE - Keycloak - OIDC

Grazie, la risposta e’ chiara,
Resta solo una domanda aperta.
In teoria possiamo usare “n” chiavi e sistemi di crittografia, uno sovrapposto all’altro, e avere una comunicazione che a tutti gli effetti, vista da un esterno, sono dati random, indecifrabili. Il guaio e’ che nei sistemi complessi e’ sufficiente che un microdettaglio non funzioni, e si blocca tutto. Non a caso questo Forum abbonda di commenti sull’incompatiblita’ di un certo lettore con un SW con un hardware ecc.
Domanda - dove passa il confine, e chi lo decide, del compromesso tra sicurezza, semplicita’, praticita’ d’uso? Altrimenti abbiamo una sicurissima CIE ma troppo spesso e’ la stessa PA a chiedere di inviare email con fotocopia dei documenti di identita’ perche’ la CIE non funziona. Quando a sicurezza, una follia, ma almeno si ottiene il servizio desiderato. E se anche il KGB impara che domani faccio l’esame del sangue, so what? Che lo impari!
Da anni nuove direttive UE sulla sicurezza impongono 2FA, impronte, procedure extra per la verifica dei conti bancari ecc. Ebbene, il rapporto della BCE sugli abusi online rivelava che questi erano una minuscola parte in relazione ai costi infrastrutturali per aumentare la sicurezza. Inoltre, che quasi tutti gli abusi avevano luogo tramite phishing e non inserendosi sui canali di comunicazione tra utente e banca. Personalmente preferirei pagare 0.042% in piu’ a transazione (entita’ complessiva degli abusi nel 2015, prima di 2FA) piuttosto che diversi EUR per finanziare l’infrastruttura. Ma non ho scelta, la banca impone di continuo nuove procedure.

Quella che viene sollevata qui è forse la cosa più frustrante della crittografia: o va tutto o non va niente, vedendo solo i dati finali non è possibile sapere se abbiamo già fatto il 99% del lavoro o solo il 10%.

Anche qui, personalissimo parere, per evitare questi grattacapi è necessario avere a disposizione della documentazione completa e dettagliata, che possa indirizzarci correttamente verso la soluzione. Bisogna riuscire a trovare un punto d’incontro tra le esigenze specifiche (in questo caso di CIE) e la facilità di integrazione. Usando protocolli pubblici è sicuramente una parte del puzzle, visto che esistono soluzioni e librerie che sollevano chi deve integrarli in sistemi più complessi dal doversi studiare le specifiche.
Ovviamente non è mai possibile accontentare tutti e sicuramente si saranno sempre dei casi specifici in cui sarà necessario più lavoro per integrarsi.

Un buono studio iniziale della soluzione necessaria, magari prendendo in considerazione dove potrebbe doversi espandere in futuro, fa un grande differenza.

1 Mi Piace

Grazie per la risposta, abbiamo riportato le tue indicazioni ma ci ritorna ancora lo stesso errore, essendo il documento di federazione simile al tuo ed a altri già federati sospettiamo esserci un problema sulle chiavi di firma.
Potresti indicarci come le hai generate per favore?

Se non ricordo male con openssl, senza particolari configurazioni. Ho quindi esportato chiave privata e certificato in formato PEM e utilizzando questo codice in node:

{
	kty: "RSA",
	use: "sig",
	n: key.public.n,
	e: key.public.e,
	kid: this.getKeyID(use), // Key ID
	x5c: [key.cert.raw.toString("base64")],
	x5t: crypto.createHash("sha1").update(key.cert.raw).digest("base64url"),
}

dove key è un oggetto che contiene

{
	cert: new crypto.X509Certificate(key.cert),
	public: crypto.createPublicKey({ key: key.cert, format: "pem", type: "spki" }).export({ format: "jwk" }),
	private: crypto.createPrivateKey(key.private),
}

Noi siamo riusciti a registrarci sul portale, ma non ci è possibile testare l’implementazione in pre-produzione per un errore generico dopo aver inviato la richiesta. Non ho ancora avuto modo di darci un occhio, ma potrebbe anche aver qualcosa a che fare con la restrizione (arbitraria, a mio parere) di limitare gli accessi solo all’Italia.

Ciao @Stefano788 potresti passarmi il link alla tua EC cosi’ la controllo?

Ciao @glauco l’url della mia EC è il seguente:
https://ssotest.provincia.cs.it/oidc/rp/.well-known/openid-federation?format=json

Ora ho provato a rigenerare la chiave di federazione con le indicazioni del post precedente partendo da certificato e chiave pubblica generati tramite questo tool
GitHub - italia/spid-compliant-certificates-python: Python native solution to generate and validate X.509 certificates according to Avviso SPID n.29 v3. ma mi torna sempre lo stesso errore.
Grazie!

Stai usando la versione 1.0.0 di spid-cie-oidc-java?
Ti ho messo a disposizione l’app di esempio gia’ federata in preprod, puoi confrontare le EC https://rp-java.comune.preganziol.tv.it

Nel README.md della webapp avevo messo qualche suggerimento per passare l’onboarding.

Detto questo, elimina i claims x5c e x5t dalla chiave di federazione, per esperienza diretta posso dirti che genera errore durante l’onboarding :smile:

Esatto sto usando quella libreria, avevo letto il README e fatto un pò di prove, il claim x5c l’ho aggiunto ultimamente nella speranza di risolvere l’errore. Ora lo rimuovo e contronto con quello che mi hai indacato. Grazie mille!

Di nulla, ancora una cosa, nel caso: la mail dei claim contacts deve corrispondere all’indirizzo mail dell’Ente nella pratica amministrativa, non usare quella del referente tecnico.

Nel caso vieni in slack e possiamo chattare piu’ agevolmente

Da ultimo noto che il claim iat è avanti di un’ora, lancia l’app con la flag per forzare la timezone:
mvn clean spring-boot:run -Dspring-boot.run.jvmArguments="-Duser.timezone=UTC"

Ciao, scusa se ti scrivo, ma una volta che nel portale del CIE c’è scritto che la componente tecnica è federata e ti arriva anche la mail, quali sono i prossimi passI? cioè significa che i miei clienti ora possono usare la CIE? oppure hanno anche un portale per fare i test? io non sapendo ne leggere ne scrivere ho abilitato una componente di pre produzione ed una di produzione

Ciao @swpFra ora puoi ricavare il tuo Trust Mark (ad esempio in preprod da questo link: https://preprod.oidc.registry.servizicie.interno.gov.it/resolve?sub=<TUO_CLIENT_ID>&anchor=https://preprod.oidc.registry.servizicie.interno.gov.it) e lo inserisci nell’EC.

Dopo questo passaggio tenti il ciclo di login/logoff in preproduzione, usando la CIE di test (se l’hai richiesta), oppure una CIE, unitamente all’app Cie ID di test, [tieni presente che, a prescindere dalle acr_values settate, il livello di auth in preproduzione e’ sempre SpidL3, quindi obbligo di NFC].

Ti consiglio di evitare l’ambiente di produzione per fare le prove di login, i due ambienti sono praticamente identici, quindi se non va in preproduzione c’e’ qualche errore da risolvere nell’auth request.

Quando tutto va a buon fine, puoi permettere l’uso del login con CIE OIDC ai tuoi utenti.

grazie mille @glauco ! si le tessere di test me le hanno inviate, ora l’unica cosa che non ho ben capito qual’è l’url a cui inviare l’authrequest quando clicco sul bottone “Entra con CIE”? per esempio: " https://spcie.servizicie.interno.gov.it/sp" ?

Devi ricavare l’auth endpoint dalla Entity configuration dell’Openid Provider, in questo caso l’OP e’: https://preproduzione.oidc.idserver.servizicie.interno.gov.it e l’url di auth e’ https://preproduzione.oidc.idserver.servizicie.interno.gov.it/idp/profile/oidc/authorize

Cmq di questi passaggi di solito si occupa il software, per curiosita’ quale stai utilizzando?

Salve a tutti! Ma qualcuno è riuscito a integrare il CIE con Keycloak?

Ciao @swpFra,
così a prima vista:

  • acr_values vanno messe in ordine decrescente.
  • aud e’ un array che dovrebbe includere anche l’auth endpoint https://preproduzione.oidc.idserver.servizicie.interno.gov.it/idp/profile/oidc/authorize.

Se mi dessi l’url di login potrei fare altre verifiche.

@swpFra ti do una mano volentieri, in questi mesi ho avuto modo di aiutare molti colleghi su questi temi. Mandami in privato l’url di login e vedo di capire quale sia il problema con i miei strumenti di analisi.

@glauco riesci per caso a condividere qualche screenshot/indicazione su come sei riuscito ad utilizzare Keycloak con SPID OIDC? grazie!

Chiedo venia, ho letto ora il messaggio… Dove lavoro non usiamo Keycloak in produzione, avevo solo fatto qualche test l’anno scorso con una versione precedente compatibile con un plugin per oidc-fed v.16. Mi sono ripromesso di provare con l’ultima versione, ma siamo sotto elezioni e non ancora avuto modo di farlo. Spero di darti informazioni tra qualche settimana.

1 Mi Piace

Buongiorno @swpFra,

scusa il disturbo, ti scrivo perché abbiamo un problema analogo a quanto hai segnalato nel post del 29 aprile scorso in merito all’errore “Non è possibile procedere. La sessione non è piu’ valida. E’ necessario eseguire una nuova autenticazione.”
Anche noi abbiamo eseguito con successo la procedura di federazione OIDC in pre-produzione ma nella fase di test del client riceviamo questa segnalazione e non riusciamo a sbloccare la situazione. Comprendo che è passato qualche mese, ma se hai risolto forse cortesemente puoi fornirmi qualche indicazione.
Ti ringrazio anticipatamente.