Utilizzo di SPID con profilo OIDC per un nuovo progetto: è possibile?

Ciao a tutti,

sto lavorando a un progetto java che prevede l’integrazione con SPID per l’autenticazione degli utenti.

In particolare, vorremmo utilizzare il profilo OIDC (OpenID Connect) di SPID, recentemente standardizzato, per semplificare l’integrazione con i nostri sistemi.

Volevo chiedere:

  • È attualmente possibile, per un nuovo Service Provider, registrarsi ed utilizzare SPID sfruttando direttamente OIDC senza passare per SAML?
  • Tutti gli Identity Provider SPID supportano già il profilo OIDC, oppure al momento il supporto è parziale?
  • Se dobbiamo utilizzare SAML, mi conviene partire dal progetto base spid spring di github?

Grazie mille in anticipo per ogni chiarimento!

Un saluto,
Gennaro

Per quanto ne so:

  1. No
  2. Nessuno, almeno ufficialmente.
  3. E’ una buona base di partenza, ma, visto che non è aggiornato da 3 anni, non escludo che siano necessario fare dei correttivi. Puoi testare la libreria usando l’Ambiente Demo SPID e vede se e quali errori ti riporta.
1 Mi Piace

Ti ringrazio.

volevo chiedervi un chiarimento su come sfruttare il progetto spid-saml-check.

Dopo aver avviato il validator, viene richiesto di caricare un file XML contenente il metadata SP.
In questo caso, posso utilizzare il metadata generato dal mio progetto spid-spring, oppure devo creare un metadata separato localmente? Oppure ancora: serve necessariamente un metadata già firmato e validato da AgID per poter effettuare correttamente i test?

Grazie mille per l’aiuto e il supporto.

Un saluto,
Gennaro

  • Per testare la correttezza della libreria in questione, sarebbe estremamente opportuno usare il metadata da essa generato.
  • L’Ambiente DEMO nasce proprio per consentire agli sviluppatori di effetturare test e debugging in maniera del tutto autonoma.
  • AgID non firma mai i metadata dei Service Provider.
1 Mi Piace

Ti ringrazio ancora per l’ennesimo aiuto.

Questo è il metadato che stiamo inviando :<?xml version="1.0" encoding="UTF-8"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceIndex="0" AssertionConsumerServiceURL="https://pippo.it/spid/send-response" AttributeConsumingServiceIndex="1" Destination="https://demo.spid.gov.it/samlsso" ForceAuthn="true" ID="_bb88bae9-7c3e-4fa7-8590-36af64ff06e1" IssueInstant="2025-04-24T14:36:45.632Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"><saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" NameQualifier="https://pippo.it/pub-ag-full">https://pippo.it/pub-ag-full</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <ds:Reference URI="#_bb88bae9-7c3e-4fa7-8590-36af64ff06e1"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>OZdtCiLrKN/39bymiN3GsgJ+8NcJm2+TFA8WKE44oeM=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> pZs1V9x4tTb3SwJ/vb6ZkITrVuXrIzLeN/yqjNwQrRWNmSZe3vsa7omx+gL83XdzOhxsad9FN7Vj&#13; nS3bKwg8Mhg/jr0YakO30E3OW/SnnwOCVWtHt/hKB8p8e7MBzMyeLSSTmcVhWWPEAZ9q4ERYO3jq&#13; dP/jXao2VP1O/isJZYQeah/IZFseMVI3944juSAh8pw51oXio6CYxvotckUAEN181DWoz2ogD8zL&#13; OCSHCWUPP/I7oBPwFLA0pDB3uIC6zWsVsgYPFBnHRO2JtNIT4KMgVVpt05fHeziYWHqLYJj7Tg2n&#13; tVLU3jViWnHoR/mqrFGy8vNWpe2vc8eHXWoBEwjEPvZIC+4Feb2MiKqQJxOCkpJrCFxysLYGWu2Q&#13; np1xdbV+wO5MLn0+HY1SbF6I25FltL3/SAxCvWDHDgMD4DAKMNChrIogxXgNHrAgsJrDvR8UH+oP&#13; 5DK/p3ymKxXwWGUwykKNe/yoGjy7T9xbMAn+Om24DiHZMXfWBA1SqFyy </ds:SignatureValue> <ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIGXDCCBMSgAwIBAgIUAIqgB3mQAHK9m431n8sQThgGFvUwDQYJKoZIhvcNAQELBQAwgZwxGzAZ BgNVBAoMEkNvbXVuZSBkaSBQb3p6dW9saTEbMBkGA1UEAwwSQ29tdW5lIGRpIFBvenp1b2xpMSsw KQYDVQRTDCJodHRwczovL2NvYy5zeW5jbGFiLml0L3B1Yi1hZy1mdWxsMRUwEwYDVQRhDAxQQTpJ VC1jX2g1MDExCzAJBgNVBAYTAklUMQ8wDQYDVQQHDAZOYXBvbGkwHhcNMjUwNDIzMTAzMzE4WhcN MjYwNDIzMTAzMzE4WjCBnDEbMBkGA1UECgwSQ29tdW5lIGRpIFBvenp1b2xpMRswGQYDVQQDDBJD b211bmUgZGkgUG96enVvbGkxKzApBgNVBFMMImh0dHBzOi8vY29jLnN5bmNsYWIuaXQvcHViLWFn LWZ1bGwxFTATBgNVBGEMDFBBOklULWNfaDUwMTELMAkGA1UEBhMCSVQxDzANBgNVBAcMBk5hcG9s aTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALsksJx0yGd9xweIOywZiDfGeABdd6RV KxJ2L1kp/XVx2wnMp2FqKVeEAg9wp+i1/ORn5xA2D4zuLi4zCIDhySV24tvXVcj53/Xxj5N/rAhs /oQS3b4PdUo+ju8L9muqtWFTdhYF36Tx7mZz46aLypVRIpsqqpWY9WZKUmxIFhP25pFEtfc41OHc 3QcRbAqmt6YBLMB+p5xD5vUY+ockqRp1ogrlxdQNpJq4QLHF+Yf8vV+uJrr7/ocr8wXHL6pzQSOg mHyJv5thy9kqMqJ/NoAef9zU6DEeOc09hpjOuiXp33slqYknm9ZQEh1jlRjhnjB0qfVazNRBJrLS Xrre7KoZ6CXBmgScANURFhtKSjAU9BmdNaUChO73gFtigcm1OE2+0RF4/JY3RiT9A8E9oJcyO2lG FtCUzMOHFYKTpdxQNu2SZNeQcYuNUdxE4iNVjvg3wtHsAV6sPhhSbeD/C8P8zXhhgrTHmj8YG8r2 sZH+ZXRYIO69hWa/m7V2BY4cTwIDAQABo4IBkjCCAY4wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMC BsAwcwYDVR0gBGwwajAfBgMrTBAwGDAWBggrBgEFBQcCAjAKDAhBZ0lEcm9vdDAgBgQrTBAGMBgw FgYIKwYBBQUHAgIwCgwIYWdJRGNlcnQwJQYGK0wQBAIBMBswGQYIKwYBBQUHAgIwDQwLY2VydF9T UF9QdWIwHQYDVR0OBBYEFOacP1sH/RUD5uNDLKMRAvZsr3lTMIHcBgNVHSMEgdQwgdGAFOacP1sH /RUD5uNDLKMRAvZsr3lToYGipIGfMIGcMRswGQYDVQQKDBJDb211bmUgZGkgUG96enVvbGkxGzAZ BgNVBAMMEkNvbXVuZSBkaSBQb3p6dW9saTErMCkGA1UEUwwiaHR0cHM6Ly9jb2Muc3luY2xhYi5p dC9wdWItYWctZnVsbDEVMBMGA1UEYQwMUEE6SVQtY19oNTAxMQswCQYDVQQGEwJJVDEPMA0GA1UE BwwGTmFwb2xpghQAiqAHeZAAcr2bjfWfyxBOGAYW9TANBgkqhkiG9w0BAQsFAAOCAYEAQSMda+t3 P8ACj+H33ROZgYZZDPY8ygW4TTyML0e0WpnoRQZnk0rSl2pRS9WAqwL/QhOGmOlde1XV3eXgZ9K7 6NL2nUmHhy9kNWZSYoZGleUEHjtvRVddrE7mq4ReQyfJBO6DOillKuCDvIxletnHUDdHxuV8Rsnz YzBIMe3IChto8YCHvmGF6g9ko0+xqolrY+YBDy7vje2jfd7p5lhhA+LF8yGY3zJlTbuCssWh+Mlo Na17Rtzb0YIMlleW0tP3TcEFzUz2H2VMSxV+WXJ3Vib/HEkf0W3BUPpEmuE2AkQDSc5EOFBtZqek D4s3H09uRbZFC/VvmI8rYo6eOTLXoQyOWK46KCMU5V7qYLlqHq1l/cOWkr6fXEPNVmmp27nEiSxk 4bMO6Gv3ywJxSX/gNk/+SH9lve90pgzP5yri3ZbpFBE2aJFX8KVTRo3uj5aC3S9Qfa/aZ9Zu3ohB 5ZjG+WeYDDvm1a8Hi+sPSEf7dtg+Ey8jOVptepXBztE2YRuZ</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/><saml2p:RequestedAuthnContext Comparison="exact"><saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://www.spid.gov.it/SpidL2</saml:AuthnContextClassRef></saml2p:RequestedAuthnContext></saml2p:AuthnRequest>

Se proviamo con il metadato di demo.spid.gov.it la richiesta rimane in pending, invece con spid saml check da un errore generico :

SI è verificato un errore, Reinviare la richiesta dalla pagina del servizio.

Sai cosa potrebbe mancare?

Grazie mille.

  1. Non è un metadata ma una AuthnRequest (c’è scritto anche all’inizio del messaggio), ovvero una richiesta di autenticazione. Il consiglio è sempre quello di leggere le regole tecniche per capire la differenza fra i vari elementi coinvolti e evitare confusione.
  2. Stai indicando l’endpoint (AssertionConsumerService) dove inviare le Response in due modi: tramite indicazione diretta della url (AssertionConsumerServiceURL) e tramite riferimento a quando indicato nel metadata (AssertionConsumerServiceIndex). Sempre nelle regole tecniche è indicato che le due soluzioni sono alternative l’una con l’altra.
  3. Stai indicando come endpoint l’indirizzo “https://pippo.it/spid/send-response”. Dubito che sia realmente l’indirizzo dove vuoi ricevere i messaggi da parte degli Identity Provider…