Shibboleth-sp Errore caricamento metadati da registry

Ciao a tutti,
da quanto è stato inserito nel registry https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml il metadata di Teamsystem ho un errore di validazione del metadata da parte di shibboleth:
WARN OpenSAML.MetadataProvider.XML : trying backup file, exception loading remote resource: Invalid child element: saml2p:Extensions
Che non permette il download e l’aggiornamento dei metadata degli IdP pubblici. Analizzando il file,
effettivamente il metadata di Teamsystem ha queste estensione in più che crea l’errore:

<saml2p:Extensions xmlns:spid="https://spid.gov.it/saml-extensions">
<spid:SupportedAuthnContextClassRefs>
<AuthnContextClassRef>https://www.spid.gov.it/SpidL1</AuthnContextClassRef>
<AuthnContextClassRef>https://www.spid.gov.it/SpidL2</AuthnContextClassRef>
</spid:SupportedAuthnContextClassRefs>
<spid:SupportedPurposes>
<Purpose>P</Purpose>
<Purpose>LP</Purpose>
<Purpose>PG</Purpose>
<Purpose>PF</Purpose>
<Purpose>PX</Purpose>
</spid:SupportedPurposes>
</saml2p:Extensions>

Il metadata viene caricato automaticamente da shibboleth tramite la configurazione MetadataProvider type=“XML” url=“https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml” e di default il validate è a false.
Sinceramente non riesco a capire come far accettare questo metadata o come aggiungere lo schema samlp spid al momento del parsing del metadata. Qualcun’altro si è scontrato con questo problema?
Grazie!

uno potrebbe aggiungere un custom schema, come in SchemaValidationFilter
ma prima avrei da trovare dove è definito lo xsd per https://spid.gov.it/saml-extensions.
Dico bene?
PS: anche qui il download dei metadati degli IdP è fermo.

a parte che ho confuso lo IdP con lo SP per cui la indicazione di cui sopra non ha senso, il problema secondo me è che è malformato il metadata quindi va sistemato upstream.
Infatti: guarda lo schema a
https://www.w3.org/2002/ws/databinding/edcopy/collection/detected/OASIS-SAML-Metadata-2_0.html
definisce un elemento Extensions, ma è md:Extensions, non samlp:Extensions.
Ed ha anche senso: samlp contiene dati di protocolli: https://www.w3.org/2002/ws/databinding/edcopy/collection/detected/OASIS-SAML-Protocol-2_0.html

A conferma della tua segnalazione, riporto l’avviso che vedo in Shibboleth.
Nel mio caso è di livello CRIT:

2022-09-30 06:40:04 CRIT OpenSAML.MetadataProvider.XML : maintaining existing configuration, error reloading resource (https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml): Invalid child element: saml2p:Extensions

Ciao a tutti, noi abbiamo bypassato il problema rimuovendo quella sezione dal metadata. Adesso però abbiamo un altro problema perchè nella SAMLResponse l’elemento “StatusMessage” non contiene un textContent e manda in errore la libreria XMLTooling che utilizza Shibboleth per validare la SAMLResponse.
Di per se la SAMLResponse è corretta. Al momento non siamo riusciti a trovare un workaround.

1 Mi Piace

Scusate, un IdP lavora con un XML di “metadato” mal formato e invece che farglielo correggere ci si dà da fare per aggirare (e ignorare) l’errore?

1 Mi Piace

Mi rispondo da solo, sembra che il metadata ora sia cambiato ma più che altro è cambiato anche l’url da cui scaricarlo:

curl -i https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml
HTTP/2 301
server: nginx/1.10.3 (Ubuntu)
date: Sat, 22 Oct 2022 13:54:16 GMT
content-type: text/html
content-length: 194
location: https://registry.spid.gov.it/entities-idp
strict-transport-security: max-age=15768000; preload
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1; mode=block

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.3 (Ubuntu)</center>
</body>
</html>

e questa la parte modificata del metadata per renderlo compatibile:

  <md:Extensions xmlns:spid="https://spid.gov.it/saml-extensions">
    <spid:SupportedAuthnContextClassRefs>
      <AuthnContextClassRef>https://www.spid.gov.it/SpidL1</AuthnContextClassRef>
      <AuthnContextClassRef>https://www.spid.gov.it/SpidL2</AuthnContextClassRef>
    </spid:SupportedAuthnContextClassRefs>
    <spid:SupportedPurposes>
      <Purpose>P</Purpose>
      <Purpose>LP</Purpose>
      <Purpose>PG</Purpose>
      <Purpose>PF</Purpose>
      <Purpose>PX</Purpose>
    </spid:SupportedPurposes>
  </md:Extensions>

Ora shibboleth SP non dà più errore.