Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errori in installazione ultima versione ed errore in check saml request che guarda internamente nel path sbagliato #213

Open
mperudirectio opened this issue Jan 13, 2022 · 1 comment

Comments

@mperudirectio
Copy link

mperudirectio commented Jan 13, 2022

Buongiorno,
stiamo riscontrando dei problemi in uso con l'installazione e anche l'esecuzione di questo progetto.

Stiamo provando la validazione di spid-saml-check, per il momento in locale, per effettuare i test sul metadata, le request e le response.
La chiamata tramite la nostra app al validator funziona correttamente, atterriamo nell'app e ci logghiamo come validator / validator correttamente.
Anche il download del metadata e sia check strict che check extra del metadata non danno nessun warn/errore.
Questo il metadata downloadato:

<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:spid="https://spid.gov.it/saml-extensions" ID="a088bc6e-33c5-4ff2-b35b-d9c3ff9a2c9e" entityID="https://localhost:44388/">
    <ds:Signature Id="ODCECSign">
        <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="#a088bc6e-33c5-4ff2-b35b-d9c3ff9a2c9e">
                <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>
					[DigestValue]
                </ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>
			[SignatureValue]
        </ds:SignatureValue>
        <ds:KeyInfo>
            <ds:X509Data>
                <ds:X509Certificate>                    
					[X509Certificate]
                </ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
    </ds:Signature>
    <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>
                        [X509Certificate]
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:KeyDescriptor use="encryption">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>
                        [X509Certificate]
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://localhost:44388/spid/logout"/>
        <md:NameIDFormat>
            urn:oasis:names:tc:SAML:2.0:nameid-format:transient
        </md:NameIDFormat>
        <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://localhost:44388/spid/acs" index="0" isDefault="true"/>
        <md:AttributeConsumingService index="1">
            <md:ServiceName xml:lang="it">
                Accesso ODCEC Torino tramite SPID
            </md:ServiceName>
            <md:RequestedAttribute Name="name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="fiscalNumber" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="familyName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="spidCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="gender" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="dateOfBirth" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="countyOfBirth" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="idCard" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="ivaCode" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="placeOfBirth" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
            <md:RequestedAttribute Name="companyName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
        </md:AttributeConsumingService>
    </md:SPSSODescriptor>
    <md:Organization>
        <md:OrganizationName xml:lang="it">
            ODCEC Torino
        </md:OrganizationName>
        <md:OrganizationDisplayName xml:lang="it">
            Ordine dei Dottori Commercialisti e degli Esperti Contabili di Torino
        </md:OrganizationDisplayName>
        <md:OrganizationURL xml:lang="it">
            https://localhost:44388/
        </md:OrganizationURL>
    </md:Organization>
    <md:ContactPerson contactType="other">
        <md:Extensions>
            <spid:IPACode>
                [ipa code]
            </spid:IPACode>
            <spid:Public/>
        </md:Extensions>
        <md:EmailAddress>
            [email]
        </md:EmailAddress>
    </md:ContactPerson>
</md:EntityDescriptor>

(Attualmente sia le url di assertion e logout, e anche l'entity id sono tutte in riferimento al progetto locale)
Check strict ed extra del metadata vengono eseguiti senza dare errori (ovviamente il controllo non di produzione).
Invece quando andiamo a testare la request, innanzitutto questo è lo saml della request che ci viene mostrato:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_cd8e9961-e171-44ea-a92a-4c272791d15e" Version="2.0" IssueInstant="2022-01-13T11:58:41.746104Z" Destination="https://localhost:8080/samlsso" ForceAuthn="true" AssertionConsumerServiceIndex="0" AttributeConsumingServiceIndex="0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer NameQualifier="https://localhost:44388/" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
        https://localhost:44388/
    </saml:Issuer>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
            <Reference URI="#_cd8e9961-e171-44ea-a92a-4c272791d15e">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                    <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <DigestValue>
                    [DigestValue]
                </DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>
            [SignatureValue]
        </SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509Certificate>
                    [X509Certificate]
                </X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
    <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
    <saml:Conditions NotBefore="2022-01-13T11:48:41.746104Z" NotOnOrAfter="2022-01-13T12:08:41.746104Z"/>
    <samlp:RequestedAuthnContext Comparison="minimum">
        <saml:AuthnContextClassRef>
            https://www.spid.gov.it/SpidL2
        </saml:AuthnContextClassRef>
    </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>

Se proviamo ad eseguire il check (sia strict che extra), l'applicazione va in eccezzione dando il seguente errore:
image

Andando ad ispezionare il file system del container, abbiamo constatato che il problema sta nel fatto che il comando che viene lanciato torna indietro di una cartella per andare a cercare i file: file://../data/
Inizialmente pensavo che l'errore stesse nel ../ che non ci dovrebbe essere. Ma in realtà, andando ad analizzare il filesystem, dentro data effettivamente non è presente il file sp-authn-request-strict.json;
image

A questo punto, non sapendo come possiamo manualmente fixare questo comando errato, chiediamo se qualcuno potrebbe indicarci una possibile soluzione.

Per quanto concerne invece la problematica di installazione, quando proviamo ad installare l'ultima versione viene riportato un errore di node, che non riesce a trovare il modulo "express":
image

Per risolverlo, siamo scesi di una versione per installarlo:
docker run -t -i -p 8080:8080 italia/spid-saml-check:v.1.8.1

In questo modo il container si è installato ed eseguito correttamente. Ma comunque l'ultima versione ci risulta impossibile da installare.

Grazie mille in anticipo.

@vpxyz
Copy link

vpxyz commented Jan 17, 2022

Buongiorno,
confermo quanto sopra. La cosa non si è risolta anche installando express e alcune dipendenze che gli errori, man mano, segnalavano:

RUN cd /spid-saml-check/spid-validator && \ cd client && npm install --silent && cd .. && \ cd server && npm install --silent && cd .. && \ npm install express \ npm install express-handlebars \ npm install helmet \ npm install express-session \ npm install fs-extra \ npm run build && \ npm cache clean --force

Dopo aver fatto ciò, l'errore era il seguente:

`

[email protected] start-prod /spid-saml-check/spid-validator
node server/spid-validator.js

/spid-saml-check/spid-validator/node_modules/universalify/index.js:15
}, 'name', { value: fn.name })
^

TypeError: Cannot read property 'name' of undefined
at exports.fromCallback (/spid-saml-check/spid-validator/node_modules/universalify/index.js:15:26)
at Object. (/spid-saml-check/spid-validator/node_modules/fs-extra/lib/fs/index.js:57:27)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object. (/spid-saml-check/spid-validator/node_modules/fs-extra/lib/index.js:5:6)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start-prod: node server/spid-validator.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start-prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-01-17T10_23_49_231Z-debug.log
`
Grazie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants