italia / spid-saml-check

Tool di verifica implementazione SPID SAML
European Union Public License 1.2
72 stars 60 forks source link

Errore di validazione XSD non comprensibile vs Avviso n. 29 #145

Closed carlobonamico closed 3 years ago

carlobonamico commented 3 years ago

Stiamo provando ad utilizzare spid-saml-check da immagine Docker spid-saml-check:latest, con digest 6a73866ebb500f367accc591c0496fe034934376104d14bbdf91e7a269a0b2c1.

Presumibilmente dovrebbe essere la versione 1.5.5 (Immagina aggiornata il 3/5/2021).

Dopo aver fatto Metadata / Download, al momento della validazione XSD otteniamo il seguente errore:

the metadata must validate against the XSD stderr: http://www.w3.org/2001/xml.xsd:1: parser error : Document is empty stderr: ^ stderr: ./xsd/saml-schema-metadata-sp-spid-av29.xsd:22: element import: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}import': Failed to parse the XML resource 'http://www.w3.org/2001/xml.xsd'. stderr: WXS schema ./xsd/saml-schema-metadata-sp-spid-av29.xsd failed to compile

che apparentemente sembra un errore sul caricamento dell' XSD piu' che nel formato del file XML in se'.

Rimuovendo in toto i tag ` </md:Organization>

` otteniamo invece un errore parlante tipo "organization non presente". I metadati che generano l'errore sono disponibili su https://rispro.aob.it/estensa.cloud.html5.SPID/metadata.xml
carlobonamico commented 3 years ago

Nel log del container docker viene riportato lo stesso errore, come Unknown IO Error:

[FAIL] the metadata must validate against the XSD, stderr: error : Unknown IO error, stderr: http://www.w3.org/2001/xml.xsd:1: parser error : Document is empty,, ^, stderr: ./xsd/saml-schema-metadata-sp-spid-av29.xsd:22: element import: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}import': Failed to parse the XML resource 'http://www.w3.org/2001/xml.xsd'., stderr: WXS schema ./xsd/saml-schema-metadata-sp-spid-av29.xsd failed to compile, , ----------------------------------------------------------------------, Ran 1 test in 15.311s, , FAILED (failures=1), ERROR: InvocationError for command /spid-saml-check/specs-compliance-tests/.tox/sp-metadata-xsd-sp-av29/bin/python -m unittest --verbose test/sp/metadata_xsd_sp-av29.py (exited with code 1), ___________________________________ summary ____________________________________, cleanup: commands succeeded, ERROR: sp-metadata-xsd-sp-av29: commands failed,

Abbiamo il sospetto che il problema nasca da problemi di connettività del container, perche'

the metadata must validate against the XSD stderr: error : 
Resource temporarily unavailable stderr: warning: failed to load external entity "http://www.w3.org/2001/xml.xsd" 
stderr: ./xsd/saml-schema-metadata-sp-spid-av29.xsd:22: element import: Schemas parser warning : Element '{http://www.w3.org/2001/XMLSchema}import': Failed to locate a schema at location 'http://www.w3.org/2001/xml.xsd'. 
Skipping the import. stderr: ./xsd/saml-schema-metadata-sp-spid-av29.xsd:47: element attribute: Schemas parser error : attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration. 
stderr: ./xsd/saml-schema-metadata-sp-spid-av29.xsd:54: element attribute: Schemas parser error : attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration. 
stderr: WXS schema ./xsd/saml-schema-metadata-sp-spid-av29.xsd failed to compile
--

Il file di metadati è su server ospitato su Internet, e viene raggiunto correttamente dal validator (che sembra quindi leggere correttamente la configurazione del proxy dalle variabili d'ambiente).

Lo script python di test sembra invece non rilevare le impostazioni del proxy o avere problemi di comunicazione con il proxy in questione.

carlobonamico commented 3 years ago

Effettuando invece la validazione con l'opzione "Pre Avviso n.29" invece il problema non si presenta. Potrebbe quindi dipendere dall' xsd versione "29".

damikael commented 3 years ago

Buongiorno @carlobonamico , confermo, come da te sospettato, che l'errore dipende da problemi di connessione.

Rimuovendo in toto i tag

otteniamo invece un errore parlante tipo "organization non presente". La verifica della presenza del tag Organization avviene prima della verifica che genera l'errore.

Gli errori riscontrati indicano che non è stato possibile recuperare la risorsa alla url http://www.w3.org/2001/xml.xsd

Ho verificato il metadata con una installazione locale di spid-saml-check e non riscontro il problema da te rilevato. Occorre quindi verificare che il container riesca ad accedere correttamente alla rete internet.

rzabini commented 3 years ago

Un possibile workaround, nel caso il container non possa accedere a Internet, è modificare il seguente attributo schemaLocation nel file saml-schema-metadata-sp-spid-av29.xsd da <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> a <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="./xml.xsd"/>

(come nel file pre-avviso-29: saml-schema-metadata-sp-spid.xsd).