Cool-jconon - Selezioni online

Ciao, i modelli vengono caricati allo startup dell’applicativo, se poi venono aggiornati viene evidenziato un warning sulla differenze dell’md5, se devi cambiarlo puoi accedere ad Alfresco tramite webdav ed aggiornare il file

Salve, ho una domanda sul container Alfresco fornito insieme a cool-jconon-template. Funziona tutto bene ma non riesco a cambiare la password di ‘admin’. Mi aspettavo di accendere all’indirizzo /share per poter usare l’interfaccia di Alfresco ma non funziona. Come si cambia la password?

Ciao, Share non c’è ma comunque se sei abituato ad usarlo puoi avviarlo, la password di admin può essere cambiata anche da cool-jconon-template

Ciao Marco, potresti elaborare un poco di più la risposta? Non sono pratico di Alfresco. So solo che in una installazione “standard” si può gestire da /share. Ho anche provato la strada dell’installazione standard caricando gli Amp come indicato ma non riesco a proseguire (penso sia da riadattare il file alfresco-global.properties, ma a questo punto preferisco usare l’installazione fornita già pronta, a patto di cambiare la password per sicurezza).

Se non sei pratico dell’installazione conviene che segui quella fornita con docker, quello che puoi fare è avviare il tutto poi accedere con admin/admin su jconon e quindi cambiare la password, al successivo riavvio però non dimendicare di cambiare -Duser.admin.password=admin

Buongiorno, vi scriviamo nuovamente perchè abbiamo riscontrato un errore in fase di validazione del metadata con AGID. In particolare, nella fase di test delle response effettuato da AGID si ottiene sempre il messaggio:

{"timestamp":"2021-12-03T11:27:08.693+00:00","status":403,"error":"Forbidden","message":"Forbidden","path":"/auth/realms/CNR/broker/Infocert/endpoint"}

Probabilmente dipende dal metadata.xml che contiene:

<md:SingleLogoutService Binding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST Location=https://SITO_COOL_JCONON/rest/security/logout/>
<md:SingleLogoutService Binding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST Location=https://SITO_COOL_JCONON/auth/realms/CNR/broker/Aruba/endpoint/>
<md:SingleLogoutService Binding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST Location=https://SITO_COOL_JCONON/auth/realms/CNR/broker/Infocert/endpoint/>

Il file metadata.xml è stato compilato da noi prendendo spunto da vari esempi/template trovati su github.
Esiste un template ufficiale per interfacciarsi correttamente con cool-jconon? O avete riscontrato un errore simile a quello proposto?

Grazie per la collaborazione!

Salve, al CNR oltre a Selezioni Online abbiamo l’SSO con Keyclock per cui nei metadati trova anche i riferimenti a quello, per cui se avete già fatto l’on-boarding SPID dovreste integrarlo, altrimenti potreste far riferimento a questo https://selezionionline.cnr.it/jconon/rest/static/metadata/sp/sp_metadata.xml eliminando tutti i riferimenti a https://sso.cnr.it

Buongiorno Marco, l’ultimo modello che abbiamo utilizzato è proprio quello https://selezionionline.cnr.it/jconon/rest/static/metadata/sp/sp_metadata.xml
dal quale abbiamo tolto i riferimenti al vostro sso. Abbiamo poi firmato il metadata e validato con il Validator AGID con risultati positivi.
Nel metadata comunque la sostituzione l’abbiamo fatta in questo modo:

</md:KeyDescriptor>

<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://bandi.aspbassaromagna.it/rest/security/logout"/>

<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Aruba/endpoint"/>
[...]
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://bandi.aspbassaromagna.it/spid/send-response" index="9"/>

Quello che non riusciamo a capire è, quindi, se l’errore (403) di cui sopra fa riferimento al file o se serve fare qualche modifica ulteriore.

Se avete altre opzioni o suggerimenti, vi chiederei di aiutarci. Nel frattempo cerco di indagare la questione anche nei forum #spid dedicati.

Grazie ancora,
Karim

Mi sa che

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Aruba/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Infocert/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Intesa/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Lepida/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Namirial/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Poste/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Sielte/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/SpidItalia/endpoint”/>

<md:SingleLogoutService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Tim/endpoint”/>

ed anche

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Aruba/endpoint” index=“0” isDefault=“true”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Infocert/endpoint” index=“1”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Intesa/endpoint” index=“2”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Lepida/endpoint” index=“3”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Namirial/endpoint” index=“4”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Poste/endpoint” index=“5”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Sielte/endpoint” index=“6”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/SpidItalia/endpoint” index=“7”/>

<md:AssertionConsumerService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST” Location=“https://bandi.aspbassaromagna.it/auth/realms/CNR/broker/Tim/endpoint” index=“8”/>

Non servono per cui puoi anche eliminarli

buongiorno, volevo chiederti se la firma OTP aruba si puo disabilitare ed eventualmente delle indicazioni? c’e disponibile un manuale di amministratore del sistema?

Salve,

Non c’è un vero e proprio manuale ma può far riferimento ai seguenti link:

Per quanto riguarda la firma remota, è presente solo per le Comunicazioni/Convocazioni/Esclusioni, per cui basta non utilizzare la funzionalità di firma e procedere direttamente con l’invio tramite PEC e App IO.

ok, ti ringrazio delle inddicazioni

Buongiorno Marco,
abbiamo eliminato le stringhe che ci hai indicato, ma AGID ci ha segnalato nuovamente errore in fase di response. Stiamo quindi cercando di effettuare i test in autonomia. Non riusciamo ad integrare né spid-saml-check né SPID-testenv2.
La procedura che effettuiamo è:

  • Prelevare metadata.xml e scriverlo in /src/main/resources/META-INF/metadata/idp/test-metadata.xml
  • Adattare postURL, redirectURL, entityId nel idp.yml
  • Attivare profilo dev su SPRING_PROFILES_ACTIVE

Cool-jconon non si avvia più, restituendo l’errore:

[ERROR] org.springframework.boot.SpringApplication:871 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SPIDIntegrationService' defined in URL [jar:file:/opt/jconon.war!/WEB-INF/lib/cool-jconon-spid-4.9.37.jar!/it/cnr/si/cool/jconon/spid/service/SPIDIntegrationService.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602)
Caused by: java.lang.NullPointerException: null
	at it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService.getIDPSSODescriptor(SPIDIntegrationService.java:221)
	at it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService.lambda$afterPropertiesSet$3(SPIDIntegrationService.java:184)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)

Grazie come sempre per la collaborazione,
Karim

Ciao dovresti controllare quanto scritto in idp.yml, dallo stacktrace sembra con trovi la risorsa, tutte le entry presenti in idp.yml devono esistere.

Ciao Marco,
abbiamo seguito le tue indicazioni ed effettivamente ci eravamo persi un dettaglio.
Una volta sistemato però ci siamo trovati a un bivio legato agli index del AssertionConsumerService e AttributeConsumingServic:

CASO n.1) Abbiamo indicato:

<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://bandi.aspbassaromagna.it/spid/send-response" index="1" isDefault="true"/>
<md:AttributeConsumingService index="1">
<md:ServiceName xml:lang="it">Single sign-on</md:ServiceName>
<md:RequestedAttribute FriendlyName="Email" Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>

Risultato: la response funziona perfettamente e lo spid-testenv2 è ok. Quando facciamo la validazione del metadata perà da errore 62 (“Must be present the default AssertionConsumerService with index = 0”)

CASO n.2) Abbiamo indicato:

<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://bandi.aspbassaromagna.it/spid/send-response" index="0" isDefault="true"/>
<md:AttributeConsumingService index="0">
<md:ServiceName xml:lang="it">Single sign-on</md:ServiceName>
<md:RequestedAttribute FriendlyName="Email" Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>

Risultato: il metadata andrebbe bene, ma non gira lo spid-testenv2 e non riusciamo a verificare la response.

Suggerimenti? Siamo a un vicolo cieco.

Grazie sempre per la disponibilità,
Karim

Mi sembra molto strano, ma avete ggiornato il metadata sotto SPID test e i parametri di avvio?
spid.attributeConsumingServiceIndex=0
spid.assertionConsumerServiceIndex=0

Buongiorno Marco,
siamo riusciti a implementare lo spid-saml-check di AGID.
Abbiamo un’altra domanda (scusateci) per quanto riguarda le response. Abbiamo notato che alla #03 (03. Response - Assertion non firmata ) dove il risultato atteso è “KO”, in realtà fa il login correttamente con SPID (utente: SpidValidator AgID).
Abbiamo anche visto che, in generale, nei casi di risultato atteso “KO”, il risultato è:
{"timestamp":"2021-12-23T09:03:32.787+00:00","status":500,"error":"Internal Server Error","exception":"java.lang.NullPointerException","message":"No message available","path":"/spid/send-response"}
È normale?

Grazie sempre,
Karim

buongiorno, abbiamo caricato un json cone le sed nel path di progettto src\main\resources\remote-xxx\Data Dictionary\Web Applications\jconon\WEB-INF\classes\sedi.json ma non vediamo le sedi caricate come scelta quando carichiamo un bando? il parametro --siper.sedi.url= va settato in qualche modo?

Ciao Karim, Se mi mandi il frammento dei log dove compare il NPE posso controllare

Nel caso del test “02. Response non firmata” le log sono:

[INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:544 - Total of SPIDRequest 5
[INFO] it.cnr.si.cool.jconon.spid.repository.SPIDRepository:51 - cleared spid request with id _8e89c263-ec3b-49e8-bcf7-97d2e1863c29
[ERROR] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]:175 - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService.validateSignature(SPIDIntegrationService.java:574)
at it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService.decodeAndValidateSamlResponse(SPIDIntegrationService.java:565)
at it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService.idpResponse(SPIDIntegrationService.java:759)
at it.cnr.si.cool.jconon.spid.rest.SPID.idpResponse(SPID.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[troncato per eccessiva lunghezza]
[WARN] it.cnr.si.cool.jconon.rest.openapi.controllers.IndexController:62 - ERROR Page Controller Status:500 Message:No message available

Il problema grave è nel caso “03. Response - Assertion non firmata”, dove il risultato atteso è “KO”, ma l’utente si logga correttamente. In questo caso le log sono le seguenti:

[INFO] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:544 - Total of SPIDRequest 5
[INFO] it.cnr.si.cool.jconon.spid.repository.SPIDRepository:51 - cleared spid request with id _0b9af87f-bff4-481b-a86e-565c90e1a86a
[ERROR] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:574 - SPID Validate Response Signature: true, org.opensaml.xml.signature.impl.KeyInfoImpl@6b849ba4
[ERROR] it.cnr.si.cool.jconon.spid.service.SPIDIntegrationService:575 - SPID Validate Response Assertion Signature: false,
[INFO] it.cnr.si.cool.jconon.spid.rest.SPID:130 - Ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd
[INFO] it.cnr.cool.cmis.service.CmisAuthRepository:109 - creating binding session for ticket TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd
[INFO] it.cnr.cool.cmis.service.CmisAuthRepository:73 - user not cached for ticket TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd
[INFO] it.cnr.cool.cmis.service.CmisAuthRepository:92 - add to cache user spidvalidator-agid to the cache having ticket = TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET null?
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET /page/home?
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET null?v=0.0.1
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET /common?pageId=home&v=0.0.1
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET /common?pageId=home&v=0.0.1
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET /frontOffice/notice?ajax=true&guest=true&groups=d41d8cd98f00b204e9800998ecf8427e
[INFO] it.cnr.cool.cmis.service.CMISService:271 - User: spidvalidator-agid with ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd IP: NOSTROIP Path: GET /frontOffice/notice?ajax=true&guest=true&groups=d41d8cd98f00b204e9800998ecf8427e
[INFO] it.cnr.cool.cmis.service.CmisAuthRepository:62 - creating a new CMIS Session for ticket: TICKET_fbc24444a7775b7fab3de05aff5adb58251b03fd