Closed vincenzotirelli-snap closed 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?
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?
Ciao, guarda a me sembra tutto corretto, infatti ho provato con InfoCert e funziona, forse gli altri IdP non sono ancora aggiornati
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.
Ciao, che versione di cool-jconon utilizzate? https://github.com/consiglionazionaledellericerche/cool-jconon-template/blob/2b5c9ede685db7bce30e6f5a16484609c7909a3b/pom.xml#L25
La versione che utilizziamo è la 4.8.3.
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
@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
Non sembra ci sia differenza:
Sono identici, ora anche Poste e Sielte lo hanno recepito mentre gli altri ancora no.
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.
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
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
Ciao Marco, ti invio l'immagine del cookie così come viene settato
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.
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
Ciao Marco, di seguito il settaggio della data sul server
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.
Si l'utenza viene creata, di seguito il frammento di log
Ma forse hai qualche configurazione su NGINX che setta i cookie con SameSite=strict ???
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
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;
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;
}
}
# 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 {
}
}
}
Potresti provare ad inserire questo in location / : proxy_cookie_path / "/; secure; HttpOnly; SameSite=none";
Lo avevo già provato, però adesso è stato inserito nuovamente così come mi hai chiesto. Ho riavviato ngnix dopo la modifica.
Al momento nel log è presente il seguente messaggio
[INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:531 - Validating SAML response:
É 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.
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
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
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
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" }
Ciao allora è quello il problema l'installazione di Alfresco come è stata fatta?
Abbiamo installato Alfresco dal bundle scaricato dal seguente indirizzo:
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
Ciao Marco, grazie per il supporto, con l'istallazione dell'amp da te segnalato adesso l'autenticazione tramite Spid funziona.
Ok, ottimo
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