ServiziApplicativiCredenzialiChange.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */


  20. package org.openspcoop2.web.ctrlstat.servlet.sa;

  21. import java.text.MessageFormat;
  22. import java.util.ArrayList;
  23. import java.util.Collections;
  24. import java.util.List;

  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import javax.servlet.http.HttpSession;

  28. import org.apache.commons.lang.StringUtils;
  29. import org.apache.struts.action.Action;
  30. import org.apache.struts.action.ActionForm;
  31. import org.apache.struts.action.ActionForward;
  32. import org.apache.struts.action.ActionMapping;
  33. import org.openspcoop2.core.config.Credenziali;
  34. import org.openspcoop2.core.config.InvocazionePorta;
  35. import org.openspcoop2.core.config.ServizioApplicativo;
  36. import org.openspcoop2.core.config.Soggetto;
  37. import org.openspcoop2.core.config.constants.CredenzialeTipo;
  38. import org.openspcoop2.core.id.IDServizioApplicativo;
  39. import org.openspcoop2.core.id.IDSoggetto;
  40. import org.openspcoop2.utils.UtilsException;
  41. import org.openspcoop2.utils.certificate.ArchiveLoader;
  42. import org.openspcoop2.utils.certificate.ArchiveType;
  43. import org.openspcoop2.utils.certificate.Certificate;
  44. import org.openspcoop2.utils.certificate.KeystoreType;
  45. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  46. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  47. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  48. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  49. import org.openspcoop2.web.ctrlstat.servlet.pdd.PddCore;
  50. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  51. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  52. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  53. import org.openspcoop2.web.lib.mvc.Costanti;
  54. import org.openspcoop2.web.lib.mvc.DataElement;
  55. import org.openspcoop2.web.lib.mvc.ForwardParams;
  56. import org.openspcoop2.web.lib.mvc.GeneralData;
  57. import org.openspcoop2.web.lib.mvc.MessageType;
  58. import org.openspcoop2.web.lib.mvc.PageData;
  59. import org.openspcoop2.web.lib.mvc.Parameter;
  60. import org.openspcoop2.web.lib.mvc.ServletUtils;
  61. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  62. /**
  63.  * ServiziApplicativiCredenzialiChange
  64.  *
  65.  * @author Andrea Poli (apoli@link.it)
  66.  * @author Giuliano Pintori (pintori@link.it)
  67.  * @author $Author$
  68.  * @version $Rev$, $Date$
  69.  *
  70.  */
  71. public final class ServiziApplicativiCredenzialiChange extends Action {
  72.    
  73.     @Override
  74.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

  75.         HttpSession session = request.getSession(true);

  76.         // Inizializzo PageData
  77.         PageData pd = new PageData();

  78.         GeneralHelper generalHelper = new GeneralHelper(session);

  79.         // Inizializzo GeneralData
  80.         GeneralData gd = generalHelper.initGeneralData(request);
  81.        
  82.         TipoOperazione tipoOperazione = TipoOperazione.CHANGE;
  83.        
  84.         try {
  85.             ServiziApplicativiHelper saHelper = new ServiziApplicativiHelper(request, pd, session);
  86.            
  87.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  88.             SoggettiCore soggettiCore = new SoggettiCore(saCore);
  89.            
  90.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione
  91.             Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, session, request);
  92.             if(parentSA == null) parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  93.             boolean useIdSogg = (parentSA!=null && parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO);
  94.            
  95.             String id = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID);
  96.             int idServizioApplicativo = Integer.parseInt(id);
  97.            
  98.             String idCredenziale = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_CREDENZIALI_ID);
  99.             int idxCredenziale = Integer.parseInt(idCredenziale);
  100.            
  101.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  102.             String dominio = saHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);            
  103.            
  104.             String tipoauthSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
  105.             String subjectSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
  106.                    
  107.             String tipoCredenzialiSSLSorgente = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
  108.             if(tipoCredenzialiSSLSorgente == null) {
  109.                 tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  110.             }
  111.             String tipoCredenzialiSSLTipoArchivioS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
  112.             org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
  113.             if(tipoCredenzialiSSLTipoArchivioS == null) {
  114.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
  115.             } else {
  116.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
  117.             }
  118.             BinaryParameter tipoCredenzialiSSLFileCertificato = saHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
  119.             String tipoCredenzialiSSLFileCertificatoPassword = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
  120.             List<String> listaAliasEstrattiCertificato = new ArrayList<>();
  121.             String tipoCredenzialiSSLAliasCertificato = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
  122.             if (tipoCredenzialiSSLAliasCertificato == null) {
  123.                 tipoCredenzialiSSLAliasCertificato = "";
  124.             }
  125.             String tipoCredenzialiSSLAliasCertificatoSubject= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
  126.             String tipoCredenzialiSSLAliasCertificatoIssuer= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
  127.             String tipoCredenzialiSSLAliasCertificatoType= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_TYPE);
  128.             String tipoCredenzialiSSLAliasCertificatoVersion= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_VERSION);
  129.             String tipoCredenzialiSSLAliasCertificatoSerialNumber= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SERIAL_NUMBER);
  130.             String tipoCredenzialiSSLAliasCertificatoSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SELF_SIGNED);
  131.             String tipoCredenzialiSSLAliasCertificatoNotBefore= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
  132.             String tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
  133.             String tipoCredenzialiSSLVerificaTuttiICampi = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
  134.             if (tipoCredenzialiSSLVerificaTuttiICampi == null || StringUtils.isEmpty(tipoCredenzialiSSLVerificaTuttiICampi)) {
  135.                 if(saHelper.isEditModeInProgress() && saHelper.getPostBackElementName()==null) { // prima volta
  136.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  137.                 }
  138.             }
  139.             String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
  140.             if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
  141.                 tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  142.             }
  143.             String issuerSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);

  144.             String tipoCredenzialiSSLWizardStep = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP);
  145.             if (tipoCredenzialiSSLWizardStep == null) {
  146.                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  147.             }
  148.             String oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;
  149.            
  150.             String promuoviCertificato = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PROMUOVI);
  151.             if(promuoviCertificato == null) {
  152.                 promuoviCertificato = Costanti.CHECK_BOX_DISABLED;
  153.             }
  154.                        
  155.             String actionConfirm = saHelper.getParameter(Costanti.PARAMETRO_ACTION_CONFIRM);
  156.                        
  157.             boolean visualizzaPromuoviCertificato = idxCredenziale != 0; // CHANGE dipende dal certificato scelto (idx != 0)
  158.             String servletCredenzialiChange = ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_CHANGE;
  159.            
  160.             String aggiornatoCertificatoPrecaricatoTmp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_MULTI_AGGIORNA);
  161.            
  162.             String toCall = ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_CHANGE;
  163.            
  164.             // Preparo il menu
  165.             saHelper.makeMenu();

  166.             // Prendo il nome e il provider del servizioApplicativo
  167.             ServizioApplicativo sa = saCore.getServizioApplicativo(idServizioApplicativo);
  168.             String oldNome = sa.getNome();
  169.             IDSoggetto oldIdSoggetto = new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario());
  170.             IDServizioApplicativo oldIdServizioApplicativo = new IDServizioApplicativo();
  171.             oldIdServizioApplicativo.setIdSoggettoProprietario(oldIdSoggetto);
  172.             oldIdServizioApplicativo.setNome(oldNome);
  173.             int idProv = sa.getIdSoggetto().intValue();

  174.             String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(sa.getTipoSoggettoProprietario());
  175.            
  176.             InvocazionePorta ip = sa.getInvocazionePorta();
  177.             Credenziali credenziali = null;
  178.             Credenziali oldCredenziali = null;
  179.             if (ip != null &&
  180.                 ip.sizeCredenzialiList()>0) {
  181.                 oldCredenziali = ip.getCredenziali(idxCredenziale);
  182.                 credenziali = ip.getCredenziali(idxCredenziale);
  183.             }
  184.            
  185.             List<Parameter> parametersServletSAChange = new ArrayList<>();
  186.             Parameter pIdSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_ID, sa.getId()+"");
  187.             parametersServletSAChange.add(pIdSA);
  188.             Parameter pIdSoggettoSA = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER, idProv+"");
  189.             parametersServletSAChange.add(pIdSoggettoSA);
  190.             if(dominio != null) {
  191.                 Parameter pDominio = new Parameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO, dominio);
  192.                 parametersServletSAChange.add(pDominio);
  193.             }
  194.             List<Parameter> parametersServletCredenzialiChange = new ArrayList<>();
  195.             Parameter pIdCredenziale = new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_CREDENZIALI_ID, idCredenziale);
  196.             parametersServletCredenzialiChange.add(pIdCredenziale);
  197.             parametersServletCredenzialiChange.addAll(parametersServletSAChange);
  198.            
  199.             String nomeProtocollo = null;
  200.             String tipoENomeSoggetto = null;
  201.             String nomePdd = null;
  202.             if(saCore.isRegistroServiziLocale()){
  203.                 org.openspcoop2.core.registry.Soggetto soggetto = soggettiCore.getSoggettoRegistro(idProv);
  204.                 if(soggetto==null) {
  205.                     throw new Exception("Soggetto con id '"+idProv+"' non trovato");
  206.                 }
  207.                 nomeProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(soggetto.getTipo());
  208.                 tipoENomeSoggetto = saHelper.getLabelNomeSoggetto(nomeProtocollo, soggetto.getTipo() , soggetto.getNome());
  209.                 nomePdd = soggetto.getPortaDominio();
  210.             }
  211.             else{
  212.                 Soggetto soggetto = soggettiCore.getSoggetto(idProv);
  213.                 if(soggetto==null) {
  214.                     throw new Exception("Soggetto con id '"+idProv+"' non trovato");
  215.                 }
  216.                 nomeProtocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(soggetto.getTipo());
  217.                 tipoENomeSoggetto = saHelper.getLabelNomeSoggetto(nomeProtocollo, soggetto.getTipo() , soggetto.getNome());
  218.             }

  219.             if(dominio==null) {
  220.                 boolean isSupportatoAutenticazioneApplicativiEsterni = saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(nomeProtocollo);
  221.                 if(isSupportatoAutenticazioneApplicativiEsterni) {
  222.                     PddCore pddCore = new PddCore(saCore);
  223.                     dominio = pddCore.isPddEsterna(nomePdd) ? SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE : SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
  224.                 }
  225.             }
  226.            
  227.             String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  228.             String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  229.             if(!saHelper.isModalitaCompleta()) {
  230.                 labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  231.                 labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  232.             }
  233.            
  234.             String postBackElementName = saHelper.getPostBackElementName();
  235.             String labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;

  236.             boolean visualizzaConfirm = false;
  237.             // Controllo se ho modificato il protocollo, ricalcolo il default della versione del protocollo
  238.             if(postBackElementName != null ){
  239.                 // tipo di configurazione SSL
  240.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL) ||
  241.                         postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_MODIFICA)) {
  242.                     listaAliasEstrattiCertificato = new ArrayList<>();
  243.                     tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  244.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  245.                     tipoCredenzialiSSLAliasCertificato = "";
  246.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  247.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  248.                     tipoCredenzialiSSLAliasCertificatoType= "";
  249.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  250.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  251.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  252.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  253.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  254.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  255.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;

  256.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
  257.                         subjectSA = "";
  258.                         issuerSA = "";
  259.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  260.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  261.                     }
  262.                 }

  263.                 // cambio il tipo archivio butto via il vecchio certificato            
  264.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO)) {
  265.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  266.                     tipoCredenzialiSSLAliasCertificato = "";
  267.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  268.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  269.                     tipoCredenzialiSSLAliasCertificatoType= "";
  270.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  271.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  272.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  273.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  274.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  275.                     listaAliasEstrattiCertificato = new ArrayList<>();
  276.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  277.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  278.                 }

  279.                 // selezione alias
  280.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO)) {
  281.                     if(StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  282.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  283.                     } else {
  284.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  285.                     }
  286.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  287.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  288.                     tipoCredenzialiSSLAliasCertificatoType= "";
  289.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  290.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  291.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  292.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  293.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  294.                 }
  295.                
  296.                 // mostro la modale di conferma
  297.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_PROMUOVI)) {
  298.                     visualizzaConfirm = true;
  299.                 }
  300.             }
  301.            
  302.             // ho schiacciato uno dei due tasti della modale
  303.             if(actionConfirm != null ) {
  304.                 if(actionConfirm.equals(Costanti.PARAMETRO_ACTION_CONFIRM_VALUE_NO)) {
  305.                     tipoauthSA = null; // Imposto tipoauthSA = null cosi mi viene visualizzata nuovamente la form completa.
  306.                 }
  307.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD; // reset dell'eventuale wizard
  308.                     oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;
  309.             }
  310.            
  311.             boolean checkWizard = false;
  312.             if(tipoauthSA != null && tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  313.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO) &&
  314.                         !ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI.equals(postBackElementName)) {
  315.                     if(tipoCredenzialiSSLFileCertificato.getValue() != null && tipoCredenzialiSSLFileCertificato.getValue().length > 0) {
  316.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  317.                         if(!tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  318.                             if(StringUtils.isNotEmpty(tipoCredenzialiSSLFileCertificatoPassword) ||
  319.                                     (KeystoreType.JKS.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardJksPasswordRequiredRequired()) ||
  320.                                     (KeystoreType.PKCS12.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardPkcs12PasswordRequiredRequired())
  321.                                     ) {
  322.                                 try {
  323.                                     listaAliasEstrattiCertificato = ArchiveLoader.readAliases(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLFileCertificatoPassword);
  324.                                     Collections.sort(listaAliasEstrattiCertificato);
  325.    
  326.                                     //se ho un solo alias lo imposto
  327.                                     if(!listaAliasEstrattiCertificato.isEmpty() && listaAliasEstrattiCertificato.size() == 1) {
  328.                                         tipoCredenzialiSSLAliasCertificato = listaAliasEstrattiCertificato.get(0);
  329.                                     }
  330.                                    
  331.                                     // ho appena caricato il file devo solo far vedere la form senza segnalare il messaggio di errore
  332.                                     if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  333.                                             ||oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  334.                                             || oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)) {
  335.                                         checkWizard = true;
  336.                                         if(listaAliasEstrattiCertificato.size() > 1) {
  337.                                             pd.setMessage("Il file caricato contiene pi&ugrave; certificati, selezionare un'"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO, MessageType.INFO);
  338.                                         }  
  339.                                     }
  340.                                 }catch(UtilsException e) {
  341.                                     pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  342.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  343.                                     tipoCredenzialiSSLAliasCertificato = "";
  344.                                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  345.                                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  346.                                     tipoCredenzialiSSLAliasCertificatoType= "";
  347.                                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  348.                                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  349.                                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  350.                                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  351.                                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  352.                                 }
  353.    
  354.                                 if(!listaAliasEstrattiCertificato.isEmpty() && StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  355.                                     try {
  356.                                         Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  357.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  358.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  359.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  360.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  361.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  362.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  363.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  364.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  365.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  366.                                     }catch(UtilsException e) {
  367.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  368.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  369.                                         tipoCredenzialiSSLAliasCertificato = "";
  370.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  371.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  372.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  373.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  374.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  375.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  376.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  377.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  378.                                     }
  379.                                 }
  380.                             } else {
  381.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE;
  382.                             }
  383.                         } else {
  384.                             try {
  385.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  386.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  387.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  388.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  389.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  390.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  391.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  392.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  393.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  394.                                
  395.                                 // dalla seconda volta che passo, posso salvare, la prima mostro il recap del certificato estratto
  396.                                
  397.                                 if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER)||
  398.                                         oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK)) {
  399.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  400.                                 } else {
  401.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER;
  402.                                     checkWizard = true;
  403.                                 }
  404.                             }catch(UtilsException e) {
  405.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  406.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  407.                                 tipoCredenzialiSSLAliasCertificato = "";
  408.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  409.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  410.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  411.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  412.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  413.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  414.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  415.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  416.                             }
  417.                         }
  418.                     } else {
  419.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  420.                     }
  421.                 }
  422.                
  423.                 if(StringUtils.isNotEmpty(tipoCredenzialiSSLWizardStep) && ( tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  424.                         ||tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  425.                         || tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
  426.                         )) {
  427.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  428.                         labelButtonSalva = ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO;
  429.                     }
  430.                 }else {
  431.                     labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  432.                 }
  433.             } else {
  434.                 labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  435.             }
  436.            
  437.             if(postBackElementName == null && oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD))
  438.                 tipoCredenzialiSSLWizardStep  = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  439.            
  440.             if(labelButtonSalva!= null) {
  441.                 pd.setLabelBottoneInvia(labelButtonSalva);
  442.             }
  443.            
  444.             Parameter nomeCredenziale = new Parameter(saHelper.getLabelCredenzialeCertificato(oldCredenziali!=null ? oldCredenziali.getCnSubject() : null), null);
  445.            
  446.             if(visualizzaConfirm) {
  447.                 if(useIdSogg){
  448.                     ServletUtils.setPageDataTitle(pd,
  449.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  450.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),
  451.                             new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  452.                             new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  453.                             nomeCredenziale
  454.                             );
  455.                 }else {
  456.                     ServletUtils.setPageDataTitle(pd,
  457.                             new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
  458.                             new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  459.                             new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  460.                             nomeCredenziale
  461.                             );
  462.                 }
  463.                
  464.                 // preparo i campi
  465.                 List<DataElement> dati = new ArrayList<>();

  466.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  467.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  468.                
  469.                 dati = saHelper.addCredenzialiCertificatiToDati(dati, tipoOperazione, idCredenziale, tipoauthSA, subjectSA, toCall,
  470.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  471.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  472.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  473.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  474.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  475.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA, tipoCredenzialiSSLWizardStep,
  476.                         promuoviCertificato,
  477.                         visualizzaPromuoviCertificato, null, servletCredenzialiChange, parametersServletCredenzialiChange);
  478.                
  479.                 dati = saHelper.addCredenzialiCertificatiToDatiAsHidden(dati, tipoOperazione, idCredenziale, tipoauthSA, subjectSA, toCall,
  480.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  481.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  482.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  483.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  484.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  485.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA, tipoCredenzialiSSLWizardStep,
  486.                         promuoviCertificato,
  487.                         visualizzaPromuoviCertificato, servletCredenzialiChange, parametersServletCredenzialiChange);
  488.                
  489.                 pd.setDati(dati);
  490.                
  491.                 String pre = Costanti.HTML_MODAL_SPAN_PREFIX;
  492.                 String post = Costanti.HTML_MODAL_SPAN_SUFFIX;
  493.                
  494.                 String msg = "Vuoi promuovere il certificato visualizzato come principale per l''Applicativo {0}?";

  495.                 pd.setMessage(pre + MessageFormat.format(msg, sa.getNome()) + post, Costanti.MESSAGE_TYPE_CONFIRM);

  496.                 String[][] bottoni = {
  497.                         { Costanti.LABEL_MONITOR_BUTTON_ANNULLA,
  498.                             Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_PREFIX +
  499.                             Costanti.LABEL_MONITOR_BUTTON_ANNULLA_CONFERMA_SUFFIX

  500.                         },
  501.                         { Costanti.LABEL_MONITOR_BUTTON_CONFERMA,
  502.                             Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_PREFIX +
  503.                             Costanti.LABEL_MONITOR_BUTTON_ESEGUI_OPERAZIONE_CONFERMA_SUFFIX }};

  504.                 pd.setBottoni(bottoni );
  505.                
  506.                 // disabilito la form
  507.                 pd.disableEditMode();

  508.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  509.                
  510.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, ForwardParams.CHANGE());
  511.             }
  512.            
  513.             // Se nomehid = null, devo visualizzare la pagina per la modifica
  514.             // dati
  515.             if(saHelper.isEditModeInProgress() || checkWizard){
  516.                
  517.                 if(useIdSogg){
  518.                     ServletUtils.setPageDataTitle(pd,
  519.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  520.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),
  521.                             new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  522.                             new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  523.                             nomeCredenziale
  524.                             );
  525.                 }else {
  526.                     ServletUtils.setPageDataTitle(pd,
  527.                             new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
  528.                             new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  529.                             new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  530.                             nomeCredenziale
  531.                             );
  532.                 }
  533.                
  534.                 if (tipoauthSA == null){
  535.                     if (credenziali != null){
  536.                         if(credenziali.getTipo()!=null)
  537.                             tipoauthSA = credenziali.getTipo().toString();
  538.                        
  539.                         if(credenziali.getCertificate() != null) {
  540.                             tipoCredenzialiSSLFileCertificato.setValue(credenziali.getCertificate());
  541.                             tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  542.                             tipoCredenzialiSSLVerificaTuttiICampi = credenziali.isCertificateStrictVerification() ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
  543.                            
  544.                             try {
  545.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  546.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  547.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  548.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  549.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  550.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  551.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  552.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  553.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  554.                             }catch(UtilsException e) {
  555.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  556.                                 tipoCredenzialiSSLAliasCertificato = "";
  557.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  558.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  559.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  560.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  561.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  562.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  563.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  564.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  565.                             }
  566.                         } else {
  567.                             subjectSA = credenziali.getSubject();
  568.                             issuerSA = credenziali.getIssuer();
  569.                             tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE;
  570.                             tipoCredenzialiSSLConfigurazioneManualeSelfSigned = ( subjectSA != null && subjectSA.equals(issuerSA)) ? Costanti.CHECK_BOX_ENABLED :Costanti.CHECK_BOX_DISABLED;
  571.                         }
  572.                     }
  573.                 }
  574.                 if (tipoauthSA == null) {
  575.                     tipoauthSA = ConnettoriCostanti.DEFAULT_AUTENTICAZIONE_TIPO;
  576.                 }

  577.                 // preparo i campi
  578.                 List<DataElement> dati = new ArrayList<>();

  579.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  580.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  581.                
  582.                 dati = saHelper.addCredenzialiCertificatiToDati(dati, tipoOperazione, idCredenziale, tipoauthSA, subjectSA, toCall,
  583.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  584.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  585.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  586.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  587.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  588.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA, tipoCredenzialiSSLWizardStep,
  589.                         promuoviCertificato,
  590.                         visualizzaPromuoviCertificato,
  591.                         checkWizard ? null : aggiornatoCertificatoPrecaricatoTmp,
  592.                         servletCredenzialiChange, parametersServletCredenzialiChange);
  593.                
  594.                 pd.setDati(dati);

  595.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  596.                
  597.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, ForwardParams.CHANGE());
  598.             }

  599.             // Controlli sui campi immessi
  600.             boolean isOk = saHelper.servizioApplicativoCredenzialiCertificatiCheckData(TipoOperazione.CHANGE, idProv, sa, idxCredenziale, protocollo, idxCredenziale);
  601.                    
  602.             if (!isOk) {
  603.                
  604.                 // setto la barra del titolo
  605.                 if(useIdSogg){
  606.                 ServletUtils.setPageDataTitle(pd,
  607.                         new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  608.                         new Parameter(labelApplicativiDi + tipoENomeSoggetto, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST, new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),
  609.                         new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  610.                         new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  611.                         nomeCredenziale
  612.                         );
  613.                 }else {
  614.                     ServletUtils.setPageDataTitle(pd,
  615.                             new Parameter(labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST),
  616.                             new Parameter(sa.getNome(), ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CHANGE, parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),
  617.                             new Parameter(ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CERTIFICATI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_CREDENZIALI_LIST , parametersServletSAChange.toArray(new Parameter[parametersServletSAChange.size()])),                        
  618.                             nomeCredenziale
  619.                             );
  620.                 }

  621.                 // preparo i campi
  622.                 List<DataElement> dati = new ArrayList<>();

  623.                 dati.add(ServletUtils.getDataElementForEditModeFinished());

  624.                 dati = saHelper.addServizioApplicativoHiddenToDati(dati, id, idProv+"", dominio, sa.getNome());
  625.                
  626.                 dati = saHelper.addCredenzialiCertificatiToDati(dati, tipoOperazione, idCredenziale, tipoauthSA, subjectSA, toCall,
  627.                         tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio,
  628.                         tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  629.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  630.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  631.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  632.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA, tipoCredenzialiSSLWizardStep,
  633.                         promuoviCertificato,
  634.                         visualizzaPromuoviCertificato,
  635.                         aggiornatoCertificatoPrecaricatoTmp,
  636.                         servletCredenzialiChange, parametersServletCredenzialiChange);
  637.                
  638.                 pd.setDati(dati);

  639.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  640.                
  641.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, ForwardParams.CHANGE());
  642.             }

  643.            
  644.             // Aggiorno credenziali
  645.             credenziali.setTipo(CredenzialeTipo.toEnumConstant(tipoauthSA));
  646.             credenziali.setUser("");
  647.             credenziali.setPassword("");
  648.            
  649.             credenziali.setAppId(false);
  650.            
  651.             if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA)) {
  652.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  653.                     Certificate cSelezionato = null;
  654.                    
  655.                     // il certificato non e' cambiato
  656.                     if(tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD)) {
  657.                         cSelezionato = ArchiveLoader.load(oldCredenziali.getCertificate());
  658.                     } else {
  659.                         if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  660.                             cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  661.                         }else {
  662.                             cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  663.                         }
  664.                     }
  665.                    
  666.                     credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  667.                     credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  668.                     credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  669.                     credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  670.                 } else { // configurazione manuale
  671.                     credenziali.setSubject(subjectSA);
  672.                     if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  673.                         credenziali.setIssuer(subjectSA);
  674.                     } else {
  675.                         credenziali.setIssuer(issuerSA);
  676.                     }
  677.                 }
  678.             }
  679.            
  680.             if(actionConfirm != null &&
  681.                 actionConfirm.equals(Costanti.PARAMETRO_ACTION_CONFIRM_VALUE_OK)) {
  682.                 // switch tra le posizioni
  683.                 // Rimuovo la credenziale principale dalla posizione 0
  684.                 Credenziali exCredenzialiPrincipali = sa.getInvocazionePorta().getCredenzialiList().remove(0);
  685.                 // imposto l'attuale credenziale in posizione 0
  686.                 sa.getInvocazionePorta().getCredenzialiList().add(0, credenziali); // promozione = set in posizione 0
  687.                 // assegno la posizione attuale all'ex credenziale principale
  688.                 sa.getInvocazionePorta().getCredenzialiList().set(idxCredenziale, exCredenzialiPrincipali);
  689.             }
  690.            
  691.             String userLogin = ServletUtils.getUserLoginFromSession(session);
  692.            
  693.             // eseguo l'aggiornamento
  694.             List<Object> listOggettiDaAggiornare = ServiziApplicativiUtilities.getOggettiDaAggiornare(saCore, oldIdServizioApplicativo, sa);
  695.             saCore.performUpdateOperation(userLogin, saHelper.smista(), listOggettiDaAggiornare.toArray());

  696.             saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  697.        
  698.             sa = saCore.getServizioApplicativo(idServizioApplicativo);

  699.             saHelper.prepareServizioApplicativoCredenzialiList(sa, id);

  700.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);

  701.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, ForwardParams.CHANGE());

  702.         } catch (Exception e) {
  703.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  704.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI_CREDENZIALI, ForwardParams.CHANGE());
  705.         }
  706.     }
  707. }