consiglionazionaledellericerche / cool-jconon-template

Template project
4 stars 8 forks source link

Accesso SPID ErrorCode nr5 #3

Closed vincenzotirelli-snap closed 2 years ago

vincenzotirelli-snap commented 2 years ago

Abbiamo attivato l'accesso SPID dell'applicativo utilizzando un unico metadata in comune ad altri applicativi già in esercizio. Il metadata, integrato con gli elementi specifici dell'installazione jconon, è stato inviato, validato e traferito da AGID agli Identity Provider. Provando ad accedere ad qualunque provider riceviamo il messaggio:

Namirial.ID - Impossibile stabilire l'autenticità della richiesta. ErrorCode nr05

Per configurare dell'accesso tramite SPID abbiamo aggiunto i seguenti parametri all'avvio dell'applicazione:

--spid.enable=true \ --spid.issuer.entityid=https://web.comune.benevento.it \ --spid.keystore.path=classpath:keystore/certificato.pkcs12 \ --spid.keystore.password={pwd} \ --spid.attributeConsumingServiceIndex=2 \ --spid.assertionConsumerServiceIndex=1 \

Di seguito l'indirizzo del servizio e le versioni dei software installate sulla macchina CentOS su cui abbiamo è installato l'applicativo:

https://selezioni.comune.benevento.it/

Apache Maven 3.0.5 (Red Hat 3.0.5-17)

Maven home: /usr/share/maven Java version: 1.8.0_302, vendor: Red Hat, Inc. Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre Default locale: it_IT, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.36.2.el7.x86_64", arch: "amd64", family: "unix"

Cordiali saluti

mspasiano commented 2 years ago

Ciao, dall'errore sembra che AuthnRequest sia firmata con un certificato diverso rispetto ai metadati presenti qui: https://selezioni.comune.benevento.it/rest/static/metadata/sp/sp_metadata.xml Potresti controllare?

vincenzotirelli-snap commented 2 years ago

Ciao Marco, da un ulteriore verifica, il certificato configurato nell'applicazione (keystore/certificato.pkcs12) è coerente con quello del metadata. C'è un modo per verificare quale certificato viene utilizzato per la firma?

mspasiano commented 2 years ago

Ciao, guarda a me sembra tutto corretto, infatti ho provato con InfoCert e funziona, forse gli altri IdP non sono ancora aggiornati

vincenzotirelli-snap commented 2 years ago

Ciao Marco, ti ringrazio per la segnalazione che ci ha permesso di verificare la correttezza della configurazione. Resta da capire perchè per gli altri IdP viene ancora mostrato il messaggio di errore. Dalla prova di login con infocert abbiamo notato che, al termine dell'autenticazione eseguita con successo, l'utente non risulta loggato nel sistema.

mspasiano commented 2 years ago

Ciao, che versione di cool-jconon utilizzate? https://github.com/consiglionazionaledellericerche/cool-jconon-template/blob/2b5c9ede685db7bce30e6f5a16484609c7909a3b/pom.xml#L25

vincenzotirelli-snap commented 2 years ago

La versione che utilizziamo è la 4.8.3.

mspasiano commented 2 years ago

Prova ad aggiornare la versione e vedere se il problema persiste, inoltre verifica se l'utenza che ha fatto login con SPID è stata effettivamente creata

peppelinux commented 2 years ago

@vincenzotirelli-snap

se vai su https://registry.spid.gov.it/assets/data/sp.json e scarichi il tuo metadata, questo corrisponde a quello che hai a sistema?

se un idp e gli altri no sicuramente c'è un disallineamento dei metadata

mspasiano commented 2 years ago

Non sembra ci sia differenza:

Sono identici, ora anche Poste e Sielte lo hanno recepito mentre gli altri ancora no.

vincenzotirelli-snap commented 2 years ago

Ciao Marco, abbiamo aggiornato la versione di Jconon alla 4.9.9 ma l'utenza, una volta completata con successo la procedura di login, continua a risultare non loggata. L'indirizzo AssertionConsumerService del nostro metadata, pur non presentando nel path "jconon" come nel metadata di esempio, sembra funzionare correttamente.

mspasiano commented 2 years ago

Ciao, se l'utenza viene creata, il problema potrebbe essere dovuto al settaggio del cookie: https://github.com/consiglionazionaledellericerche/cool-jconon/blob/a1ee02bdc043dd9f22fb9bc60cf9790f7cd23d2e/cool-jconon-spid/src/main/java/it/cnr/si/cool/jconon/spid/rest/SPID.java#L109

peppelinux commented 2 years ago

se sta su https il cookie è giusto che sia marcato con il flag Secure=true altrimenti il browser blocca l'invio applicando il filtro same-site cookie

vincenzotirelli-snap commented 2 years ago

Ciao Marco, ti invio l'immagine del cookie così come viene settato schermata_cookie

mspasiano commented 2 years ago

Ciao, vedo delle cose strane sulle date, puoi controllare la data della macchina su cui gira l'applicazione, se è contenerizzata dovresti controllare la data del container docker.

peppelinux commented 2 years ago

SameSite è strict

se usate un cookie per riconoscere la sessione in avvenuta POST sull'ACS del SP samesite, per quel cookie, deve essere settato a None, altrimenti è come se giungesse una unsolicited response.

questa indicazione è relativa all'SDK SPID utilizzata, in alcuni casi è valida in altri no, dipende da come è stata implementata la libreria d'integrazione a spid

vincenzotirelli-snap commented 2 years ago

Ciao Marco, di seguito il settaggio della data sul server image

mspasiano commented 2 years ago

Ciao, ho provato ad eseguire l'accesso con SPID ma il cookie sembra che non venga proprio settato, ma l'utenza è stata creata oppure no? Se puoi allegarmi almeno un frammento delle log posso controllare se qualcosa va storto.

vincenzotirelli-snap commented 2 years ago

Si l'utenza viene creata, di seguito il frammento di log

image

mspasiano commented 2 years ago

Ma forse hai qualche configurazione su NGINX che setta i cookie con SameSite=strict ???

mspasiano commented 2 years ago

Inoltre ho fatto dei test sui bandi che hai creato, ed ho eseguito una stampa della domanda, c'è il logo del CNR per cui dovresti cambiarlo come ad esempio è stato fatto per AGID: https://github.com/AgID/selezioni-online/blob/master/src/main/resources/it/cnr/si/cool/jconon/print/logo-print.png

vincenzotirelli-snap commented 2 years ago

Grazie per la segnalazione, il logo è stato corretto. Di seguito la mia configurazione ngnix user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid;

Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events { worker_connections 1024; }

http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 4096;

client_max_body_size 10M;

autoindex_localtime on;

include             /etc/nginx/mime.types;
default_type        application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
    listen       80;  
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

    }

# Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }

}

server { listen 127.0.0.1; server_name localhost;

# error_log /var/log/nginx/localhost.error_log info;

location / {
 allow 127.0.0.1;

}

}

Settings for a TLS enabled server.

# server { listen 443 ssl http2; listen [::]:443 ssl http2; servername ; root /usr/share/nginx/html;

    ssl_certificate           /etc/nginx/ssl/star.comune.benevento.it.crt;
    ssl_certificate_key       /etc/nginx/ssl/star.comune.benevento.it.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    #access_log            /var/log/nginx/ssl.access.log;

      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

}

mspasiano commented 2 years ago

Potresti provare ad inserire questo in location / : proxy_cookie_path / "/; secure; HttpOnly; SameSite=none";

vincenzotirelli-snap commented 2 years ago

Lo avevo già provato, però adesso è stato inserito nuovamente così come mi hai chiesto. Ho riavviato ngnix dopo la modifica.

vincenzotirelli-snap commented 2 years ago

Al momento nel log è presente il seguente messaggio

[INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:531 - Validating SAML response: https://identity.sieltecloud.it</saml:Issuer>

CPUzjg6RCt8Hs4zQ8OrImhw35FstV3lFCt/DBsbRmV0=mZSfHvS2mvc5f39ZTc68mPgdIyGviXBWHnv+OHYvGYYkwkCt2ObTjRnmDVxe3g3l4N3SxCOh7M+WqB/9tkcSOXr/FCNMUbiXh9xKb4o+NMYjv6bxiLpGN3pGxR67yqqTfH3bqggnAEzNnJArMyO//FZ1qPkyAaKTMtJ5F7d15CK1kat7Beg+FbOPO+BXA2fDIFyS0HIi0X4ce7Z3VyPjlcUavzc1IEVr5uAja7U8WEg7R/3w6uDd8xO1DmfeZrxYPVZPEwMb/lfVu4MvvDhPjSx9TqMSy3R6AcnJWffWhhoEOUzLe6nR+/zbxnbp/MWCQtRGiaeZAiej1U+6nafxjQ== MIIDczCCAlugAwIBAgIJAMsX0iEKQM6xMA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEgMB4GA1UEBwwXU2FuIEdyZWdvcmlvIGRpIENhdGFuaWExDzANBgNVBAoMBlNpZWx0ZTAeFw0xNTEyMTQwODE0MTVaFw0yNTEyMTMwODE0MTVaMFAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEgMB4GA1UEBwwXU2FuIEdyZWdvcmlvIGRpIENhdGFuaWExDzANBgNVBAoMBlNpZWx0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANIRlOjM/tS9V9jYjJreqZSctuYriLfPTDgX2XdhWEbMpMpwA9p0bsbLQoC1gP0piLO+qbCsIh9+boPfb4/dLIA7E+Vmm5/+evOtzvjfHG4oXjZK6jo08QwkVV8Bm1jkakJPVZ57QFbyDSr+uBbIMY7CjA2LdgnIIwKN/kSfFhrZUMJ6ZxwegM100X5psfNPSV9WUtgHsvqlIlvydPo2rMm21sg+2d3Vtg8DthNSYRLqgazCc0NTsigrH7niSbJCO0nq/svMX2rSFdh5GFK7/pxT+c3OFWqIR8r+RX4qW+auJqkbTuNRwxV22Sm6r69ZJwV0WspvsVJi+FYqiyoWhgUCAwEAAaNQME4wHQYDVR0OBBYEFCUx063GwUhEFDllwCBe/+jdeW+XMB8GA1UdIwQYMBaAFCUx063GwUhEFDllwCBe/+jdeW+XMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBADF94c3JwyBM86QBLeoUZxRYKPniba8B39FfJk0pb+LejKfZMvspOrOFgYQQ9UrS8IFkBX9Xr7/tjRbr2cPwZNjrEZhoq+NfcE09bnaWTyEl1IEKK8TWOupJj9UNVpYXX0LfIRrMwNEzAPQykOaqPOnyHxOCPTY957xXSo3jXOyvugtvPHbd+iliAzUoPm1tgiTKWS+EkQ/e22eFv5NEyT+oHiKovrQ+voPWOIvJVMjiTyxRic8fEnI9zzV0SxWvFvty77wgcYbeEuFZa3iidhojUge8o1uY/JUyQjFxcvvfAgWSIZwdHiNyWaAgwzLPmPCPsvBdR3xrlcDg/9Bd3D0=https://identity.sieltecloud.it 8Omm5ckMmjqc007duva5TlOzlJc4j3GQvooGvUij9Hg=qKRIazf0UWHfHpFT/RzqnW6FaHOA9V10yS40N/IIh0OnE9bALYMJAdrvfB2Gymndz++OjBFPeycYbiauLcZUilFWum6hIa+WdIOkzNrFvEngFUU/3IOeBZ64D59L9JAERuzUBGWIb2taDjQY35rwLLOYnVFQenx0kl/S1EqDg0VIJlJWuOQkO72zangcZ8h3cPKwlxOAjsdvVPIZ+/pFg+qh2aoZ6nUm+0j8b2gOqKSjIkpfIKCZFjtaA2GZ1pSOTILps17+3DuOhu6QhfRSbSXaMsFLpqe4Wj2kY6PMeCjl6bl7aCsyR/JD+Nz1LfaBAhvam0jr7FJQHF8ifZbi5Q== MIIDczCCAlugAwIBAgIJAMsX0iEKQM6xMA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEgMB4GA1UEBwwXU2FuIEdyZWdvcmlvIGRpIENhdGFuaWExDzANBgNVBAoMBlNpZWx0ZTAeFw0xNTEyMTQwODE0MTVaFw0yNTEyMTMwODE0MTVaMFAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEgMB4GA1UEBwwXU2FuIEdyZWdvcmlvIGRpIENhdGFuaWExDzANBgNVBAoMBlNpZWx0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANIRlOjM/tS9V9jYjJreqZSctuYriLfPTDgX2XdhWEbMpMpwA9p0bsbLQoC1gP0piLO+qbCsIh9+boPfb4/dLIA7E+Vmm5/+evOtzvjfHG4oXjZK6jo08QwkVV8Bm1jkakJPVZ57QFbyDSr+uBbIMY7CjA2LdgnIIwKN/kSfFhrZUMJ6ZxwegM100X5psfNPSV9WUtgHsvqlIlvydPo2rMm21sg+2d3Vtg8DthNSYRLqgazCc0NTsigrH7niSbJCO0nq/svMX2rSFdh5GFK7/pxT+c3OFWqIR8r+RX4qW+auJqkbTuNRwxV22Sm6r69ZJwV0WspvsVJi+FYqiyoWhgUCAwEAAaNQME4wHQYDVR0OBBYEFCUx063GwUhEFDllwCBe/+jdeW+XMB8GA1UdIwQYMBaAFCUx063GwUhEFDllwCBe/+jdeW+XMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBADF94c3JwyBM86QBLeoUZxRYKPniba8B39FfJk0pb+LejKfZMvspOrOFgYQQ9UrS8IFkBX9Xr7/tjRbr2cPwZNjrEZhoq+NfcE09bnaWTyEl1IEKK8TWOupJj9UNVpYXX0LfIRrMwNEzAPQykOaqPOnyHxOCPTY957xXSo3jXOyvugtvPHbd+iliAzUoPm1tgiTKWS+EkQ/e22eFv5NEyT+oHiKovrQ+voPWOIvJVMjiTyxRic8fEnI9zzV0SxWvFvty77wgcYbeEuFZa3iidhojUge8o1uY/JUyQjFxcvvfAgWSIZwdHiNyWaAgwzLPmPCPsvBdR3xrlcDg/9Bd3D0=_b3398622f883a584a23741e0b75d421586805974achttps://web.comune.benevento.ithttps://www.spid.gov.it/SpidL2MarcoTINIT-SPSMRC73H02C495GSpasianoM1973-06-02marco.spasiano@cnr.it [INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:546 - Total of SPIDRequest 1 [INFO] it.cnr.si.cool.jconon.spid.repository.SPIDRepository:51 - cleared spid request with id _4b746026-2019-45fd-a133-357c39ed4c5d [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [INFO] it.cnr.cool.rest.I18n:66 - actual language: it
mspasiano commented 2 years ago

É tutto giusto, il problema è che per qualche motivo NGINX blocca il settaggio del cookie quando arriva da SPID, perchè se faccio login normalmente non c'è problema.

mspasiano commented 2 years ago

Ho riscritto l'implementazione per la creazione del cookie da SPID uniformandola a quella del login senza SPID, dovresti aggiornare la versione del parent: https://github.com/consiglionazionaledellericerche/cool-jconon-template/blob/4268194419774e0b3d0610d73e95d288bcbcef7e/pom.xml#L25

vincenzotirelli-snap commented 2 years ago

Ciao Marco, ho aggiornato la versione del parent come da tue indicazioni ma continuo ad avere il seguente errore:

">vincenzo.tirelli@gmail.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response> [INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:546 - Total of SPIDRequest 1 [INFO] it.cnr.si.cool.jconon.spid.repository.SPIDRepository:51 - cleared spid request with id _8328aacd-dc70-4005-8e14-7de4e40576f6 [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [WARN] org.apache.xml.security.signature.XMLSignature:724 - Signature verification failed. [INFO] it.cnr.si.cool.jconon.spid.rest.SPID:110 - Ticket: null

mspasiano commented 2 years ago

Ciao allora il problema è quell'ultimo messaggio per cui non riesce a creare il Ticket dovresti chiamare questo servizio su alfresco e vedere se ti restituisce il ticket:

http://localhost:8080/alfresco/service/cnr/jconon/get-ticket/vincenzo-tirelli

Va cambiata la URL di alfresco e l'accesso è con le credenziali di Amministratore

vincenzotirelli-snap commented 2 years ago

La mia url è la seguente http://IPXXXXXX:9080/alfresco/s/cnr/jconon/get-ticket/vincenzo-tirelli, ho provato anche la tua ma ho il seguente errore { "status" : { "code" : 500, "name" : "Internal Error", "description" : "An error inside the HTTP server which prevented it from fulfilling the request." },

"message" : "09250395 Wrapped Exception (with status template): 09252297 Failed to execute script '\/it\/cnr\/jconon\/get-ticket.get.js (in repository store workspace:\/\/SpacesStore\/Company Home\/Data Dictionary\/Web Scripts)': 09252296 ReferenceError: \"cnrutils\" is not defined. (in repository store workspace:\/\/SpacesStore\/Company Home\/Data Dictionary\/Web Scripts)#2)",
"exception" : "",

"callstack" : [

],

"server" : "Community v5.2.0 (re21f2be5-b22) schema 10.057", "time" : "25-ott-2021 11.08.06" }

mspasiano commented 2 years ago

Ciao allora è quello il problema l'installazione di Alfresco come è stata fatta?

vincenzotirelli-snap commented 2 years ago

Abbiamo installato Alfresco dal bundle scaricato dal seguente indirizzo:

https://download.alfresco.com/release/community/201707-build-00028/alfresco-community-installer-201707-linux-x64.bin

mspasiano commented 2 years ago

Ok ho capito che dobbiamo aggiornare la guida perchè manca questo amp: https://repo.maven.apache.org/maven2/it/cnr/si/alfresco/java-script-extension/2.23/java-script-extension-2.23.amp

vincenzotirelli-snap commented 2 years ago

Ciao Marco, grazie per il supporto, con l'istallazione dell'amp da te segnalato adesso l'autenticazione tramite Spid funziona.

mspasiano commented 2 years ago

Ok, ottimo