ConfigurazionePolicyGestioneTokenVerificaCertificati.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.web.ctrlstat.servlet.config;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.core.commons.Liste;
- import org.openspcoop2.core.config.GenericProperties;
- import org.openspcoop2.core.config.GestioneToken;
- import org.openspcoop2.core.config.constants.StatoFunzionalita;
- import org.openspcoop2.core.config.constants.StatoFunzionalitaConWarning;
- import org.openspcoop2.core.mvc.properties.Config;
- import org.openspcoop2.core.mvc.properties.utils.ConfigManager;
- import org.openspcoop2.core.mvc.properties.utils.PropertiesSourceConfiguration;
- import org.openspcoop2.pdd.config.ConfigurazionePdDReader;
- import org.openspcoop2.pdd.core.jmx.JMXUtils;
- import org.openspcoop2.pdd.core.token.PolicyGestioneToken;
- import org.openspcoop2.pdd.core.token.PolicyNegoziazioneToken;
- import org.openspcoop2.pdd.core.token.TokenUtilities;
- import org.openspcoop2.pdd.core.token.attribute_authority.AttributeAuthorityUtilities;
- import org.openspcoop2.pdd.core.token.attribute_authority.PolicyAttributeAuthority;
- import org.openspcoop2.protocol.registry.RegistroServiziReader;
- import org.openspcoop2.utils.certificate.KeystoreParams;
- import org.openspcoop2.web.ctrlstat.core.CertificateChecker;
- import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
- import org.openspcoop2.web.ctrlstat.core.ControlStationCoreException;
- import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
- import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
- import org.openspcoop2.web.lib.mvc.Costanti;
- import org.openspcoop2.web.lib.mvc.DataElement;
- import org.openspcoop2.web.lib.mvc.DataElementType;
- import org.openspcoop2.web.lib.mvc.ForwardParams;
- import org.openspcoop2.web.lib.mvc.GeneralData;
- import org.openspcoop2.web.lib.mvc.PageData;
- import org.openspcoop2.web.lib.mvc.Parameter;
- import org.openspcoop2.web.lib.mvc.ServletUtils;
- import org.openspcoop2.web.lib.mvc.TipoOperazione;
- import org.openspcoop2.web.lib.mvc.properties.beans.ConfigBean;
- /**
- * ConfigurazionePolicyGestioneTokenVerificaCertificati
- *
- * @author Andrea Poli (poli@link.it)
- * @author Giuliano Pintori (pintori@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class ConfigurazionePolicyGestioneTokenVerificaCertificati extends Action {
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
- HttpSession session = request.getSession(true);
- // Inizializzo PageData
- PageData pd = new PageData();
- GeneralHelper generalHelper = new GeneralHelper(session);
- // Inizializzo GeneralData
- GeneralData gd = generalHelper.initGeneralData(request);
- try {
- ConfigurazioneHelper confHelper = new ConfigurazioneHelper(request, pd, session);
-
- String id = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_ID);
- String infoType = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE);
- if(infoType==null) {
- infoType = ServletUtils.getObjectFromSession(request, session, String.class, ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE);
- }
- boolean attributeAuthority = ConfigurazioneCostanti.isConfigurazioneAttributeAuthority(infoType);
-
- String alias = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_SISTEMA_NODO_CLUSTER);
-
- // Preparo il menu
- confHelper.makeMenu();
-
- ConfigurazioneCore confCore = new ConfigurazioneCore();
-
- String verificaCertificatiFromLista = confHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA);
- boolean arrivoDaLista = "true".equalsIgnoreCase(verificaCertificatiFromLista);
-
- // Prendo la lista di aliases
- List<String> aliases = confCore.getJmxPdDAliases();
- if(aliases==null || aliases.isEmpty()){
- throw new ControlStationCoreException("Pagina non prevista, la sezione configurazione non permette di accedere a questa pagina, se la configurazione non e' corretta");
- }
-
- GenericProperties genericProperties = confCore.getGenericProperties(Long.parseLong(id));
-
- PropertiesSourceConfiguration propertiesSourceConfiguration = attributeAuthority ?
- confCore.getAttributeAuthorityPropertiesSourceConfiguration() :
- confCore.getPolicyGestioneTokenPropertiesSourceConfiguration();
-
- ConfigManager configManager = ConfigManager.getinstance(ControlStationCore.getLog());
- configManager.leggiConfigurazioni(propertiesSourceConfiguration, true);
- String verificaConnettivitaS = confHelper.getParameter(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTIVITA);
- boolean verificaConnettivita = "true".equalsIgnoreCase(verificaConnettivitaS);
-
- // setto la barra del titolo
- List<Parameter> lstParam = new ArrayList<>();
- String label = attributeAuthority ?
- ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY :
- ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN;
-
- lstParam.add(new Parameter(label, ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_LIST));
-
- if(arrivoDaLista) {
- String labelVerifica =
- (verificaConnettivita ? ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CONNETTIVITA_DI : ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI_DI)
- + genericProperties.getNome();
- lstParam.add(new Parameter(labelVerifica, null));
- }
- else {
- Parameter pPolicyId = new Parameter(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_ID, genericProperties.getId() + "");
- Parameter pInfoType = new Parameter(ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE, infoType);
-
- lstParam.add(new Parameter(genericProperties.getNome(),
- ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_CHANGE,
- pInfoType, pPolicyId));
-
- String labelVerifica = (verificaConnettivita ? ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CONNETTIVITA : ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI);
- lstParam.add(new Parameter(labelVerifica, null));
- }
- // setto la barra del titolo
- ServletUtils.setPageDataTitle(pd, lstParam );
-
- List<DataElement> dati = new ArrayList<>();
- dati.add(ServletUtils.getDataElementForEditModeFinished());
- // -- raccolgo dati
-
- boolean validazione = false;
- boolean negoziazione = false;
- if(!attributeAuthority) {
- validazione = ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_GESTIONE_POLICY_TOKEN.equals(genericProperties.getTipologia());
- negoziazione = ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_RETRIEVE_POLICY_TOKEN.equals(genericProperties.getTipologia());
- }
-
- boolean httpsDynamicDiscovery = false;
- boolean httpsValidazioneJWT = false;
- boolean httpsIntrospection = false;
- boolean httpsUserInfo = false;
- boolean validazioneJwt = false;
- boolean forwardToJwt = false;
- boolean https = false;
- boolean signedJwt = false;
- boolean jwtRichiesta = false;
- boolean jwtRisposta = false;
-
- boolean verificaCertificatiPossibile = false;
-
- boolean riferimentoApplicativoModi = false;
- boolean riferimentoFruizioneModi = false;
-
- if(!verificaConnettivita) {
- if(attributeAuthority) {
- PolicyAttributeAuthority policy = AttributeAuthorityUtilities.convertTo(genericProperties);
- https = policy.isEndpointHttps();
- if(policy.isRequestJws()) {
- KeystoreParams keystoreParams = AttributeAuthorityUtilities.getRequestJwsKeystoreParams(policy);
- if(keystoreParams!=null) {
- jwtRichiesta = true;
- }
- }
- if(policy.isResponseJws()) {
- KeystoreParams keystoreParams = AttributeAuthorityUtilities.getResponseJwsKeystoreParams(policy);
- if(keystoreParams!=null) {
- jwtRisposta = true;
- }
- }
- verificaCertificatiPossibile = https || jwtRichiesta || jwtRisposta;
- }
- else {
- if(validazione) {
- GestioneToken gestioneToken = new GestioneToken();
- gestioneToken.setIntrospection(StatoFunzionalitaConWarning.ABILITATO);
- gestioneToken.setUserInfo(StatoFunzionalitaConWarning.ABILITATO);
- gestioneToken.setValidazione(StatoFunzionalitaConWarning.ABILITATO);
- gestioneToken.setForward(StatoFunzionalita.ABILITATO);
- PolicyGestioneToken policyGestioneToken = TokenUtilities.convertTo(genericProperties, gestioneToken);
- if(policyGestioneToken.isDynamicDiscovery()) {
- httpsDynamicDiscovery = policyGestioneToken.isEndpointHttps(false, false);
- }
- if(!policyGestioneToken.isDynamicDiscovery()) {
- if(policyGestioneToken.isValidazioneJWT() && policyGestioneToken.isValidazioneJWTLocationHttp()) {
- httpsValidazioneJWT = policyGestioneToken.isEndpointHttps(false, false);
- }
- if(policyGestioneToken.isIntrospection()) {
- httpsIntrospection = policyGestioneToken.isEndpointHttps(true, false);
- }
- if(policyGestioneToken.isUserInfo()) {
- httpsUserInfo = policyGestioneToken.isEndpointHttps(false, true);
- }
- if(policyGestioneToken.isValidazioneJWT()) {
- String tokenType = policyGestioneToken.getTipoToken();
- KeystoreParams keystoreParams = null;
- if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWS.equals(tokenType) ||
- org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_TYPE_JWE.equals(tokenType)) {
- keystoreParams = TokenUtilities.getValidazioneJwtKeystoreParams(policyGestioneToken);
- }
- if(keystoreParams!=null) {
- validazioneJwt = true;
- }
- }
- }
- if(policyGestioneToken.isForwardToken() && policyGestioneToken.isForwardTokenInformazioniRaccolte()) {
- String forwardInformazioniRaccolteMode = policyGestioneToken.getForwardTokenInformazioniRaccolteMode();
- KeystoreParams keystoreParams = null;
- if(org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_OP2_JWS.equals(forwardInformazioniRaccolteMode) ||
- org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWS.equals(forwardInformazioniRaccolteMode) ||
- org.openspcoop2.pdd.core.token.Costanti.POLICY_TOKEN_FORWARD_INFO_RACCOLTE_MODE_JWE.equals(forwardInformazioniRaccolteMode)) {
- keystoreParams = TokenUtilities.getForwardToJwtKeystoreParams(policyGestioneToken);
- }
- if(keystoreParams!=null) {
- forwardToJwt = true;
- }
- }
- verificaCertificatiPossibile = httpsDynamicDiscovery || httpsValidazioneJWT || httpsIntrospection || httpsUserInfo || validazioneJwt || forwardToJwt;
- }
- else if(negoziazione) {
- PolicyNegoziazioneToken policy = TokenUtilities.convertTo(genericProperties);
- https = policy.isEndpointHttps();
- if(policy.isRfc7523x509Grant()) {
- KeystoreParams keystoreParams = TokenUtilities.getSignedJwtKeystoreParams(policy);
- riferimentoApplicativoModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_APPLICATIVO_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
- riferimentoFruizioneModi = keystoreParams!=null && org.openspcoop2.pdd.core.token.Costanti.KEYSTORE_TYPE_FRUIZIONE_MODI_VALUE.equalsIgnoreCase(keystoreParams.getPath());
- if(keystoreParams!=null &&
- !riferimentoApplicativoModi &&
- !riferimentoFruizioneModi) {
- signedJwt = true;
- }
- }
- verificaCertificatiPossibile = https || signedJwt;
- }
- else {
- throw new CoreException("Tipologia '"+genericProperties.getTipologia()+"' non gestita");
- }
- }
- }
-
- boolean verificaCertificatiEffettuata = false;
-
-
-
- if(!verificaConnettivita && !verificaCertificatiPossibile) {
-
- if(riferimentoApplicativoModi) {
- pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_DEFINITI_IN_MODI_APPLICATIVO,
- Costanti.MESSAGE_TYPE_INFO);
- }
- else if(riferimentoFruizioneModi) {
- pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_DEFINITI_IN_MODI_FRUIZIONE,
- Costanti.MESSAGE_TYPE_INFO);
- }
- else {
- pd.setMessage(CostantiControlStation.LABEL_VERIFICA_CERTIFICATI_NON_PRESENTI,
- Costanti.MESSAGE_TYPE_INFO);
- }
-
- pd.disableEditMode();
-
- verificaCertificatiEffettuata = true;
- }
- else {
-
- boolean sceltaClusterId = true;
- if(!verificaConnettivita) {
- sceltaClusterId = confCore.isVerificaCertificatiSceltaClusterId();
- }
-
- if(aliases.size()==1 || alias!=null || !sceltaClusterId) {
-
- if(alias==null && !sceltaClusterId) {
- alias = CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI;
- }
-
- // -- verifica
-
- if(verificaConnettivita) {
- String aliasDescrizione = null;
- if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)){
- aliasDescrizione = aliases.get(0);
- }
- else {
- aliasDescrizione = alias!=null ? alias : aliases.get(0);
- }
-
- confHelper.addDescrizioneVerificaConnettivitaToDati(dati, genericProperties, null, false,
- aliasDescrizione
- );
-
- if (!confHelper.isEditModeInProgress()) {
- List<String> aliasesForCheck = new ArrayList<>();
- if(aliases.size()==1) {
- aliasesForCheck.add(aliases.get(0));
- }
- else if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) {
- aliasesForCheck.addAll(aliases);
- }
- else {
- aliasesForCheck.add(alias);
- }
-
- boolean rilevatoErrore = false;
- StringBuilder sbPerOperazioneEffettuata = new StringBuilder();
- int index = 0;
- for (String aliasForVerificaConnettore : aliasesForCheck) {
-
- String risorsa = confCore.getJmxPdDConfigurazioneSistemaNomeRisorsaConfigurazionePdD(aliasForVerificaConnettore);
- StringBuilder bfExternal = new StringBuilder();
- String descrizione = confCore.getJmxPdDDescrizione(aliasForVerificaConnettore);
- if(aliases.size()>1) {
- if(index>0) {
- bfExternal.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
- }
- bfExternal.append(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_SISTEMA_NODO_CLUSTER).append(" ").append(descrizione).append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
- }
- try{
- String nomeMetodo = null;
- if(attributeAuthority) {
- nomeMetodo = confCore.getJmxPdDConfigurazioneSistemaNomeMetodoCheckConnettoreAttributeAuthority(aliasForVerificaConnettore);
- }
- else if(validazione) {
- nomeMetodo = confCore.getJmxPdDConfigurazioneSistemaNomeMetodoCheckConnettoreTokenPolicyValidazione(aliasForVerificaConnettore);
- }
- else if(negoziazione) {
- nomeMetodo = confCore.getJmxPdDConfigurazioneSistemaNomeMetodoCheckConnettoreTokenPolicyNegoziazione(aliasForVerificaConnettore);
- }
- Boolean slowOperation = true; // altrimenti un eventuale connection timeout (es. 10 secondi) termina dopo il readTimeout associato all'invocazione dell'operazione via http check e quindi viene erroneamenteo ritornato un readTimeout
- String stato = confCore.getInvoker().invokeJMXMethod(aliasForVerificaConnettore, confCore.getJmxPdDConfigurazioneSistemaType(aliasForVerificaConnettore),
- risorsa,
- nomeMetodo,
- slowOperation,
- genericProperties.getNome());
- if(
- JMXUtils.MSG_OPERAZIONE_EFFETTUATA_SUCCESSO.equals(stato)
- ||
- (stato!=null && stato.startsWith(JMXUtils.MSG_OPERAZIONE_EFFETTUATA_SUCCESSO_PREFIX))
- ){
- bfExternal.append(CostantiControlStation.LABEL_CONFIGURAZIONE_VERIFICA_CONNETTORE_EFFETTUATO_CON_SUCCESSO);
- }
- else{
- rilevatoErrore = true;
- bfExternal.append(CostantiControlStation.LABEL_CONFIGURAZIONE_VERIFICA_CONNETTORE_FALLITA);
- if(stato!=null && stato.startsWith(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA)) {
- bfExternal.append(stato.substring(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA.length()));
- }
- else {
- bfExternal.append(stato);
- }
- }
- }catch(Exception e){
- ControlStationCore.logError("Errore durante la verifica del connettore (jmxResource '"+risorsa+"') (node:"+aliasForVerificaConnettore+"): "+e.getMessage(),e);
- rilevatoErrore = true;
- String stato = e.getMessage();
- bfExternal.append(CostantiControlStation.LABEL_CONFIGURAZIONE_VERIFICA_CONNETTORE_FALLITA);
- if(stato.startsWith(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA)) {
- bfExternal.append(stato.substring(JMXUtils.MSG_OPERAZIONE_NON_EFFETTUATA.length()));
- }
- else {
- bfExternal.append(stato);
- }
- }
-
- if(sbPerOperazioneEffettuata.length()>0){
- sbPerOperazioneEffettuata.append(org.openspcoop2.core.constants.Costanti.WEB_NEW_LINE);
- }
- sbPerOperazioneEffettuata.append(bfExternal.toString());
-
- index++;
- }
- if(sbPerOperazioneEffettuata!=null){
- if(rilevatoErrore)
- pd.setMessage(sbPerOperazioneEffettuata.toString());
- else
- pd.setMessage(sbPerOperazioneEffettuata.toString(),Costanti.MESSAGE_TYPE_INFO);
- }
-
- pd.disableEditMode();
- }
- }
- else {
-
- List<String> aliasesForCheck = new ArrayList<>();
- boolean all = false;
- if(aliases.size()==1) {
- aliasesForCheck.add(aliases.get(0));
- }
- else if(CostantiControlStation.LABEL_VERIFICA_CONNETTORE_TUTTI_I_NODI.equals(alias)) {
- aliasesForCheck.addAll(aliases);
- all = true;
- }
- else {
- aliasesForCheck.add(alias);
- }
-
- CertificateChecker certificateChecker = null;
- if(all) {
- certificateChecker = confCore.getJmxPdDCertificateChecker();
- }
- else {
- certificateChecker = confCore.newJmxPdDCertificateChecker(aliasesForCheck);
- }
- StringBuilder sbDetailsError = new StringBuilder();
-
- int sogliaWarningGiorni = confCore.getVerificaCertificatiWarningExpirationDays();
-
- String labelPolicy = genericProperties.getNome();
-
- String posizioneErrore = null;
- String extraErrore = null;
-
- // verifica
- StringBuilder sbDetailsWarningPolicy = new StringBuilder();
- String posizioneWarningPolicy = null;
- if(attributeAuthority) {
- certificateChecker.checkAttributeAuthority(sbDetailsError, sbDetailsWarningPolicy,
- https, jwtRichiesta, jwtRisposta,
- genericProperties,
- sogliaWarningGiorni);
- }
- else if(validazione) {
- certificateChecker.checkTokenPolicyValidazione(sbDetailsError, sbDetailsWarningPolicy,
- httpsDynamicDiscovery, httpsValidazioneJWT, httpsIntrospection, httpsUserInfo,
- validazioneJwt, forwardToJwt,
- genericProperties,
- sogliaWarningGiorni);
- }
- else if(negoziazione) {
- certificateChecker.checkTokenPolicyNegoziazione(sbDetailsError, sbDetailsWarningPolicy,
- https, signedJwt,
- genericProperties,
- sogliaWarningGiorni);
- }
- if(sbDetailsError.length()>0) {
- posizioneErrore = labelPolicy;
- }
- else if(sbDetailsWarningPolicy.length()>0) {
- posizioneWarningPolicy = labelPolicy;
- }
-
-
- // analisi warning
- String warning = null;
- String posizioneWarning = null;
- String extraWarning = null;
- if(sbDetailsError.length()<=0 &&
- sbDetailsWarningPolicy.length()>0) {
- warning = sbDetailsWarningPolicy.toString();
- posizioneWarning = posizioneWarningPolicy;
- }
-
- // esito
- List<String> formatIds = new ArrayList<>();
- formatIds.add(RegistroServiziReader.ID_CONFIGURAZIONE_CONNETTORE_HTTPS);
- formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_JWT);
- formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_VALIDAZIONE_FORWARD_TO_JWT);
- formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_TOKEN_NEGOZIAZIONE_SIGNED_JWT);
- formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RICHIESTA);
- formatIds.add(ConfigurazionePdDReader.ID_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY_JWT_RISPOSTA);
- confCore.formatVerificaCertificatiEsito(pd, formatIds,
- (sbDetailsError.length()>0 ? sbDetailsError.toString() : null), extraErrore, posizioneErrore,
- warning, extraWarning, posizioneWarning,
- false);
-
- pd.disableEditMode();
-
- verificaCertificatiEffettuata = true;
- }
-
- }
-
- else {
-
- DataElement deTestConnettivita = new DataElement();
- deTestConnettivita.setType(DataElementType.TITLE);
- if(verificaConnettivita) {
- deTestConnettivita.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CONNETTIVITA);
- }
- else {
- deTestConnettivita.setLabel(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI);
- }
- dati.add(deTestConnettivita);
-
- confHelper.addVerificaCertificatoSceltaAlias(aliases, dati);
-
- }
- }
-
- pd.setLabelBottoneInvia(CostantiControlStation.LABEL_CONFIGURAZIONE_VERIFICA_CONNETTORE_BOTTONE);
- dati = confHelper.addTokenPolicyHiddenToDati(dati, id, infoType);
- DataElement de = new DataElement();
- de.setValue(arrivoDaLista+"");
- de.setType(DataElementType.HIDDEN);
- de.setName(CostantiControlStation.PARAMETRO_VERIFICA_CERTIFICATI_FROM_LISTA);
- dati.add(de);
-
- de = new DataElement();
- de.setValue(verificaConnettivita+"");
- de.setType(DataElementType.HIDDEN);
- de.setName(CostantiControlStation.PARAMETRO_VERIFICA_CONNETTIVITA);
- dati.add(de);
-
- pd.setDati(dati);
-
- if(verificaCertificatiEffettuata) {
-
- // verifica richiesta dal link nella lista, torno alla lista
- if(arrivoDaLista) {
-
- ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);
- String infoTypeA = confHelper.getParameter(ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE);
- String infoTypeSession = ServletUtils.getObjectFromSession(request, session, String.class, ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE);
- if(infoTypeA==null) {
- infoTypeA = infoTypeSession;
- }
- else {
- ServletUtils.setObjectIntoSession(request, session, infoTypeA, ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE);
- }
- attributeAuthority = ConfigurazioneCostanti.isConfigurazioneAttributeAuthority(infoTypeA);
-
- // reset di eventuali configurazioni salvate in sessione
- Properties mapId = attributeAuthority ?
- confCore.getAttributeAuthorityTipologia() :
- confCore.getTokenPolicyTipologia();
- if(mapId!=null && !mapId.isEmpty()) {
- propertiesSourceConfiguration = attributeAuthority ?
- confCore.getAttributeAuthorityPropertiesSourceConfiguration() :
- confCore.getPolicyGestioneTokenPropertiesSourceConfiguration();
- configManager.leggiConfigurazioni(propertiesSourceConfiguration, true);
- for (Object oTipo : mapId.keySet()) {
- if(oTipo instanceof String) {
- String ti = (String) oTipo;
- Config config = configManager.getConfigurazione(propertiesSourceConfiguration, ti);
- ServletUtils.removeConfigurazioneBeanFromSession(request, session, config.getId());
- }
- }
- }
-
- int idLista = attributeAuthority ? Liste.CONFIGURAZIONE_GESTIONE_ATTRIBUTE_AUTHORITY : Liste.CONFIGURAZIONE_GESTIONE_POLICY_TOKEN;
-
- ricerca = confHelper.checkSearchParameters(idLista, ricerca);
- List<String> tipologie = new ArrayList<>();
- if(attributeAuthority) {
- tipologie.add(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_ATTRIBUTE_AUTHORITY);
- }
- else {
- tipologie.add(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_GESTIONE_POLICY_TOKEN);
- tipologie.add(ConfigurazioneCostanti.DEFAULT_VALUE_PARAMETRO_CONFIGURAZIONE_GESTORE_POLICY_TOKEN_TIPOLOGIA_RETRIEVE_POLICY_TOKEN);
- }
-
- List<GenericProperties> lista = confCore.gestorePolicyTokenList(idLista, tipologie, ricerca);
-
- confHelper.prepareGestorePolicyTokenList(ricerca, lista, idLista);
-
- // salvo l'oggetto ricerca nella sessione
- ServletUtils.setSearchObjectIntoSession(request, session, ricerca);
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- // Forward control to the specified success URI
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI, CostantiControlStation.TIPO_OPERAZIONE_VERIFICA_CERTIFICATI);
-
- }
- // verifica richiesta dal dettaglio, torno al dettaglio
- else {
-
- ServletUtils.setPageDataTitle(pd, lstParam);
-
- TipoOperazione tipoOperazione = TipoOperazione.CHANGE;
-
- String nome = genericProperties.getNome();
- String descrizione = genericProperties.getDescrizione();
- String tipo = genericProperties.getTipo();
-
- List<String> nomiConfigurazioniPolicyGestioneToken = configManager.getNomiConfigurazioni(propertiesSourceConfiguration);
- List<String> labelConfigurazioniPolicyGestioneToken = configManager.convertToLabel(propertiesSourceConfiguration, nomiConfigurazioniPolicyGestioneToken);
-
- String[] propConfigPolicyGestioneTokenLabelList = labelConfigurazioniPolicyGestioneToken.toArray(new String[labelConfigurazioniPolicyGestioneToken.size()]);
- String[] propConfigPolicyGestioneTokenList= nomiConfigurazioniPolicyGestioneToken.toArray(new String[nomiConfigurazioniPolicyGestioneToken.size()]);
-
- Config configurazione = configManager.getConfigurazione(propertiesSourceConfiguration, genericProperties.getTipo());
-
- Map<String, Properties> mappaDB = confCore.readGestorePolicyTokenPropertiesConfiguration(genericProperties.getId());
- ConfigBean configurazioneBean = confCore.leggiConfigurazione(configurazione, mappaDB);
-
- // non viene supportata la modalità completa. Visualizzo allora solamente il nome
- /** confHelper.aggiornaConfigurazioneProperties(configurazioneBean);
- //
- // configurazioneBean.updateConfigurazione(configurazione);
- // ServletUtils.saveConfigurazioneBeanIntoSession(session, configurazioneBean, configurazioneBean.getId());*/
-
- // preparo i campi
- dati.add(ServletUtils.getDataElementForEditModeFinished());
-
- dati = confHelper.addPolicyGestioneTokenToDati(tipoOperazione,dati,id,nome,descrizione,tipo,propConfigPolicyGestioneTokenLabelList,propConfigPolicyGestioneTokenList,
- attributeAuthority, genericProperties);
-
- dati = confHelper.addPropertiesConfigToDati(tipoOperazione,dati, tipo, configurazioneBean,false);
-
- pd.setDati(dati);
-
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
-
- return ServletUtils.getStrutsForwardEditModeFinished(mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN, ForwardParams.CHANGE());
-
- }
-
- }
-
- else {
- ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
- return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI, ForwardParams.OTHER(""));
- }
-
- } catch (Exception e) {
- return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping, ConfigurazioneCostanti.OBJECT_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_VERIFICA_CERTIFICATI, ForwardParams.OTHER(""));
- }
- }
- }