ServiziApplicativiAdd.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.util.ArrayList;
  22. import java.util.Collections;
  23. import java.util.List;

  24. import javax.net.ssl.KeyManagerFactory;
  25. import javax.net.ssl.TrustManagerFactory;
  26. import javax.servlet.http.HttpServletRequest;
  27. import javax.servlet.http.HttpServletResponse;
  28. import javax.servlet.http.HttpSession;

  29. import org.apache.commons.lang.StringUtils;
  30. import org.apache.struts.action.Action;
  31. import org.apache.struts.action.ActionForm;
  32. import org.apache.struts.action.ActionForward;
  33. import org.apache.struts.action.ActionMapping;
  34. import org.openspcoop2.core.commons.Filtri;
  35. import org.openspcoop2.core.commons.Liste;
  36. import org.openspcoop2.core.config.Connettore;
  37. import org.openspcoop2.core.config.Credenziali;
  38. import org.openspcoop2.core.config.InvocazioneCredenziali;
  39. import org.openspcoop2.core.config.InvocazionePorta;
  40. import org.openspcoop2.core.config.InvocazionePortaGestioneErrore;
  41. import org.openspcoop2.core.config.InvocazioneServizio;
  42. import org.openspcoop2.core.config.RispostaAsincrona;
  43. import org.openspcoop2.core.config.ServizioApplicativo;
  44. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  45. import org.openspcoop2.core.config.constants.CredenzialeTipo;
  46. import org.openspcoop2.core.config.constants.FaultIntegrazioneTipo;
  47. import org.openspcoop2.core.config.constants.InvocazioneServizioTipoAutenticazione;
  48. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  49. import org.openspcoop2.core.config.constants.TipologiaErogazione;
  50. import org.openspcoop2.core.config.constants.TipologiaFruizione;
  51. import org.openspcoop2.core.constants.CostantiConnettori;
  52. import org.openspcoop2.core.constants.TipiConnettore;
  53. import org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale;
  54. import org.openspcoop2.core.id.IDServizioApplicativo;
  55. import org.openspcoop2.core.id.IDSoggetto;
  56. import org.openspcoop2.core.registry.Soggetto;
  57. import org.openspcoop2.core.registry.constants.PddTipologia;
  58. import org.openspcoop2.pdd.core.autenticazione.ApiKey;
  59. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  60. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  61. import org.openspcoop2.protocol.sdk.ProtocolException;
  62. import org.openspcoop2.protocol.sdk.constants.ConsoleOperationType;
  63. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  64. import org.openspcoop2.protocol.sdk.properties.IConsoleDynamicConfiguration;
  65. import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
  66. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  67. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  68. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  69. import org.openspcoop2.utils.UtilsException;
  70. import org.openspcoop2.utils.certificate.ArchiveLoader;
  71. import org.openspcoop2.utils.certificate.ArchiveType;
  72. import org.openspcoop2.utils.certificate.Certificate;
  73. import org.openspcoop2.utils.certificate.KeystoreType;
  74. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  75. import org.openspcoop2.web.ctrlstat.core.ConsoleSearch;
  76. import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
  77. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  78. import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
  79. import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
  80. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  81. import org.openspcoop2.web.ctrlstat.servlet.OggettoDialogEnum;
  82. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  83. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoreStatusParams;
  84. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
  85. import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriHelper;
  86. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  87. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  88. import org.openspcoop2.web.lib.mvc.BinaryParameter;
  89. import org.openspcoop2.web.lib.mvc.Costanti;
  90. import org.openspcoop2.web.lib.mvc.DataElement;
  91. import org.openspcoop2.web.lib.mvc.ForwardParams;
  92. import org.openspcoop2.web.lib.mvc.GeneralData;
  93. import org.openspcoop2.web.lib.mvc.MessageType;
  94. import org.openspcoop2.web.lib.mvc.PageData;
  95. import org.openspcoop2.web.lib.mvc.Parameter;
  96. import org.openspcoop2.web.lib.mvc.ServletUtils;
  97. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  98. /**
  99.  * servizioApplicativoAdd
  100.  *
  101.  * @author Andrea Poli (apoli@link.it)
  102.  * @author Stefano Corallo (corallo@link.it)
  103.  * @author Sandra Giangrandi (sandra@link.it)
  104.  * @author $Author$
  105.  * @version $Rev$, $Date$
  106.  *
  107.  */
  108. public final class ServiziApplicativiAdd extends Action {
  109.        
  110.     @Override
  111.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

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

  113.         // Inizializzo PageData
  114.         PageData pd = new PageData();

  115.         GeneralHelper generalHelper = new GeneralHelper(session);

  116.         // Inizializzo GeneralData
  117.         GeneralData gd = generalHelper.initGeneralData(request);
  118.        
  119.         // Protocol Properties
  120.         IConsoleDynamicConfiguration consoleDynamicConfiguration = null;
  121.         ConsoleConfiguration consoleConfiguration =null;
  122.         ProtocolProperties protocolProperties = null;
  123.         IProtocolFactory<?> protocolFactory= null;
  124.         IRegistryReader registryReader = null;
  125.         IConfigIntegrationReader configRegistryReader = null;
  126.         ConsoleOperationType consoleOperationType = null;
  127.        
  128.         // Parametri Protocol Properties relativi al tipo di operazione e al tipo di visualizzazione
  129.         consoleOperationType = ConsoleOperationType.ADD;

  130.         try {
  131.             Boolean contaListe = ServletUtils.getContaListeFromSession(session);
  132.             Boolean singlePdD = ServletUtils.getObjectFromSession(request, session, Boolean.class, CostantiControlStation.SESSION_PARAMETRO_SINGLE_PDD);

  133.             ServiziApplicativiCore saCore = new ServiziApplicativiCore();
  134.             SoggettiCore soggettiCore = new SoggettiCore(saCore);
  135.            
  136.             ServiziApplicativiHelper saHelper = new ServiziApplicativiHelper(request, pd, session);
  137.            
  138.             boolean isApplicativiServerEnabled = saCore.isApplicativiServerEnabled(saHelper);
  139.            
  140.             // prelevo il flag che mi dice da quale pagina ho acceduto la sezione
  141.             Integer parentSA = ServletUtils.getIntegerAttributeFromSession(ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT, session, request);
  142.             if(parentSA == null)
  143.                 parentSA = ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_NONE;
  144.             boolean useIdSogg = (parentSA!=null && parentSA.intValue() == ServiziApplicativiCostanti.ATTRIBUTO_SERVIZI_APPLICATIVI_PARENT_SOGGETTO);
  145.            
  146.             boolean interfacciaAvanzata = saHelper.isModalitaAvanzata();
  147.            
  148.             String ruoloFruitore = null;
  149.             String ruoloErogatore = null;
  150.             String ruoloSA = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RUOLO_SA);
  151.             String tipoSA = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA);
  152.            
  153.             boolean useAsClient = false;
  154.            
  155.             if(isApplicativiServerEnabled) {
  156.                 if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT.equals(tipoSA)) {
  157.                     ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE;
  158.                 }
  159.                 if(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)) {
  160.                     ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE;
  161.                    
  162.                     String tmp = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_UTILIZZABILE_COME_CLIENT);
  163.                     useAsClient = ServletUtils.isCheckBoxEnabled(tmp);
  164.                 }
  165.             }
  166.            
  167.             if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE.equals(ruoloSA)){
  168.                 ruoloFruitore = TipologiaFruizione.NORMALE.getValue();
  169.                 ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  170.             }
  171.             else if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE.equals(ruoloSA)){
  172.                 ruoloErogatore = TipologiaErogazione.TRASPARENTE.getValue();
  173.                 ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  174.             }
  175.             else{
  176.                 ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  177.                 ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  178.             }
  179.            
  180.            
  181.            
  182.             String nome = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_NOME);
  183.             String descrizione = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_DESCRIZIONE);
  184.             String provider = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER);
  185.             String dominio = saHelper.getParameter(SoggettiCostanti.PARAMETRO_SOGGETTO_DOMINIO);            
  186.             String fault = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_FAULT);
  187.            
  188.             String tipoauthSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE);
  189.             if (tipoauthSA == null) {
  190.                 tipoauthSA = ConnettoriCostanti.DEFAULT_AUTENTICAZIONE_TIPO;
  191.             }
  192.             String utenteSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  193.             String passwordSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  194.             String subjectSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_SUBJECT);
  195.             String principalSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_PRINCIPAL);
  196.            
  197.             String changepwd = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CHANGE_PASSWORD);
  198.                        
  199.             String tipoCredenzialiSSLSorgente = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL);
  200.             if(tipoCredenzialiSSLSorgente == null) {
  201.                 tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  202.             }
  203.             String tipoCredenzialiSSLTipoArchivioS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO);
  204.             org.openspcoop2.utils.certificate.ArchiveType tipoCredenzialiSSLTipoArchivio= null;
  205.             if(tipoCredenzialiSSLTipoArchivioS == null) {
  206.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.CER;
  207.             } else {
  208.                 tipoCredenzialiSSLTipoArchivio = org.openspcoop2.utils.certificate.ArchiveType.valueOf(tipoCredenzialiSSLTipoArchivioS);
  209.             }
  210.                        
  211.             BinaryParameter tipoCredenzialiSSLFileCertificato = saHelper.getBinaryParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO);
  212.             String tipoCredenzialiSSLFileCertificatoPassword = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_PASSWORD);
  213.             List<String> listaAliasEstrattiCertificato = new ArrayList<>();
  214.             String tipoCredenzialiSSLAliasCertificato = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO);
  215.             if (tipoCredenzialiSSLAliasCertificato == null) {
  216.                 tipoCredenzialiSSLAliasCertificato = "";
  217.             }
  218.             String tipoCredenzialiSSLAliasCertificatoSubject= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SUBJECT);
  219.             String tipoCredenzialiSSLAliasCertificatoIssuer= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_ISSUER);
  220.             String tipoCredenzialiSSLAliasCertificatoType= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_TYPE);
  221.             String tipoCredenzialiSSLAliasCertificatoVersion= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_VERSION);
  222.             String tipoCredenzialiSSLAliasCertificatoSerialNumber= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SERIAL_NUMBER);
  223.             String tipoCredenzialiSSLAliasCertificatoSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_SELF_SIGNED);
  224.             String tipoCredenzialiSSLAliasCertificatoNotBefore= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_BEFORE);
  225.             String tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO_NOT_AFTER);
  226.             String tipoCredenzialiSSLVerificaTuttiICampi = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI);
  227.             if (
  228.                     (tipoCredenzialiSSLVerificaTuttiICampi == null || StringUtils.isEmpty(tipoCredenzialiSSLVerificaTuttiICampi))
  229.                     &&
  230.                     (saHelper.isEditModeInProgress() && saHelper.getPostBackElementName()==null)
  231.                 ){ // prima volta
  232.                 tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  233.             }
  234.             String tipoCredenzialiSSLConfigurazioneManualeSelfSigned= saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_MANUALE_SELF_SIGNED);
  235.             if (tipoCredenzialiSSLConfigurazioneManualeSelfSigned == null) {
  236.                 tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  237.             }
  238.             String issuerSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_ISSUER);
  239.            
  240.             String tipoCredenzialiSSLWizardStep = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP);
  241.             if (tipoCredenzialiSSLWizardStep == null) {
  242.                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  243.             }
  244.             String oldTipoCredenzialiSSLWizardStep = tipoCredenzialiSSLWizardStep;
  245.            
  246.             String multipleApiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS);
  247.             String appId = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID);
  248.             String apiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_API_KEY);
  249.            
  250.             String tokenPolicySA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_POLICY);
  251.             String tokenClientIdSA = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_TOKEN_CLIENT_ID);
  252.            
  253.             boolean tokenWithHttpsEnabledByConfigSA = false;
  254.             if(tipoauthSA!=null && !StringUtils.isEmpty(tipoauthSA)) {
  255.                 boolean tokenByPDND = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauthSA);
  256.                 tokenWithHttpsEnabledByConfigSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL_E_TOKEN_OAUTH.equals(tipoauthSA);
  257.                 if(tokenWithHttpsEnabledByConfigSA) {
  258.                     tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL;
  259.                 }
  260.                 boolean tokenModiPDNDOauth = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_PDND.equals(tipoauthSA) || ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN_OAUTH.equals(tipoauthSA);
  261.                 if(tokenModiPDNDOauth) {
  262.                     tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN;
  263.                 }
  264.                 if(tokenPolicySA==null || StringUtils.isEmpty(tokenPolicySA) || CostantiControlStation.DEFAULT_VALUE_NON_SELEZIONATO.equals(tokenPolicySA)) {
  265.                     if(tokenByPDND) {
  266.                         tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  267.                     }
  268.                 }
  269.                 else {
  270.                     if(!tokenByPDND && (tokenWithHttpsEnabledByConfigSA || tokenModiPDNDOauth) && saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  271.                         tokenPolicySA=null;
  272.                     }
  273.                     else if(tokenByPDND && !saCore.isPolicyGestioneTokenPDND(tokenPolicySA)) {
  274.                         tokenPolicySA = saCore.getDefaultPolicyGestioneTokenPDND();
  275.                     }
  276.                 }
  277.             }

  278.            
  279.             String sbustamentoInformazioniProtocolloRisposta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RISPOSTA);

  280.            
  281.             String sbustamento = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_SOAP);
  282.             String sbustamentoInformazioniProtocolloRichiesta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_SBUSTAMENTO_INFO_PROTOCOLLO_RICHIESTA);
  283.             String getmsg = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_MESSAGE_BOX);
  284.            
  285.             String invrifRichiesta = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_INVIO_PER_RIFERIMENTO_RICHIESTA);
  286.            
  287.             String risprif = saHelper.getParameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_RISPOSTA_PER_RIFERIMENTO);
  288.            
  289.             String tipoauthRichiesta = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_TIPO_AUTENTICAZIONE);
  290.            
  291.             String endpointtype = saHelper.readEndPointType();
  292.             if(endpointtype==null){
  293.                 if(interfacciaAvanzata){
  294.                     endpointtype = TipiConnettore.DISABILITATO.toString();
  295.                 }
  296.                 else{
  297.                     endpointtype = TipiConnettore.HTTP.toString();
  298.                 }
  299.             }
  300.             String tipoconn = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TIPO_PERSONALIZZATO);
  301.             String autenticazioneHttp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_HTTP);
  302.             String user = null;
  303.             String password = null;
  304.            
  305.             String connettoreDebug = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_DEBUG);
  306.            
  307.             // token policy
  308.             String autenticazioneTokenS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY_STATO);
  309.             boolean autenticazioneToken = ServletUtils.isCheckBoxEnabled(autenticazioneTokenS);
  310.             String tokenPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TOKEN_POLICY);
  311.            
  312.             // proxy
  313.             String proxyEnabled = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_ENABLED);
  314.             String proxyHostname = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_HOSTNAME);
  315.             String proxyPort = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PORT);
  316.             String proxyUsername = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_USERNAME);
  317.             String proxyPassword = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_PROXY_PASSWORD);
  318.            
  319.             // tempi risposta
  320.             String tempiRispostaEnabled = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_REDEFINE);
  321.             String tempiRispostaConnectionTimeout = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_CONNECTION_TIMEOUT);
  322.             String tempiRispostaReadTimeout = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_READ_TIMEOUT);
  323.             String tempiRispostaTempoMedioRisposta = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_TEMPI_RISPOSTA_TEMPO_MEDIO_RISPOSTA);
  324.            
  325.             // opzioni avanzate
  326.             String transferMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_MODE);
  327.             String transferModeChunkSize = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_TRANSFER_CHUNK_SIZE);
  328.             String redirectMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MODE);
  329.             String redirectMaxHop = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_OPZIONI_AVANZATE_REDIRECT_MAX_HOP);
  330.             String opzioniAvanzate = ConnettoriHelper.getOpzioniAvanzate(saHelper, transferMode, redirectMode);
  331.            
  332.             // http
  333.             String url = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_URL);
  334.             if(TipiConnettore.HTTP.toString().equals(endpointtype)){
  335.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  336.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  337.             }
  338.            
  339.             // api key
  340.             String autenticazioneApiKey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_ENDPOINT_TYPE_ENABLE_API_KEY);
  341.             String apiKeyHeader = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_HEADER);
  342.             if(apiKeyHeader==null || StringUtils.isEmpty(apiKeyHeader)) {
  343.                 apiKeyHeader = CostantiConnettori.DEFAULT_HEADER_API_KEY;
  344.             }
  345.             String apiKeyValue = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_VALUE);
  346.             String appIdHeader = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_HEADER);
  347.             if(appIdHeader==null || StringUtils.isEmpty(appIdHeader)) {
  348.                 appIdHeader = CostantiConnettori.DEFAULT_HEADER_APP_ID;
  349.             }
  350.             String appIdValue = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_APP_ID_VALUE);
  351.             String useOAS3NamesTmp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_NOMI_OAS);
  352.             boolean useOAS3Names=true;
  353.             if(useOAS3NamesTmp!=null && StringUtils.isNotEmpty(useOAS3NamesTmp)) {
  354.                 useOAS3Names = ServletUtils.isCheckBoxEnabled(useOAS3NamesTmp);
  355.             }
  356.             else {
  357.                 useOAS3Names = saHelper.isAutenticazioneApiKeyUseOAS3Names(apiKeyHeader, appIdHeader);
  358.             }
  359.             String useAppIdTmp = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_API_KEY_USE_APP_ID);
  360.             boolean useAppId=false;
  361.             if(useAppIdTmp!=null && StringUtils.isNotEmpty(useAppIdTmp)) {
  362.                 useAppId = ServletUtils.isCheckBoxEnabled(useAppIdTmp);
  363.             }
  364.             else {
  365.                 useAppId = saHelper.isAutenticazioneApiKeyUseAppId(appIdValue);
  366.             }
  367.            
  368.             // jms
  369.             String nomeCodaJMS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_NOME_CODA);
  370.             String tipoCodaJMS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_CODA);
  371.             String initcont = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_INIT_CTX);
  372.             String urlpgk = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_URL_PKG);
  373.             String provurl = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PROVIDER_URL);
  374.             String connfact = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_CONNECTION_FACTORY);
  375.             String sendas = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_TIPO_OGGETTO_JMS);
  376.             if(TipiConnettore.JMS.toString().equals(endpointtype)){
  377.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_USERNAME);
  378.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_JMS_PASSWORD);
  379.             }
  380.            
  381.             // https
  382.             String httpsurl = url;
  383.             String httpstipologia = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_SSL_TYPE);
  384.             String httpshostverifyS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_HOST_VERIFY);
  385.             boolean httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  386.             String httpsTrustVerifyCertS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS );
  387.             boolean httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  388.             String httpspath = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_LOCATION);
  389.             String httpstipo = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_TYPE);
  390.             String httpspwd = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_PASSWORD);
  391.             String httpsalgoritmo = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM);
  392.             String httpsstatoS = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_STATO);
  393.             boolean httpsstato = ServletUtils.isCheckBoxEnabled(httpsstatoS);
  394.             String httpskeystore = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEYSTORE_CLIENT_AUTH_MODE);
  395.             String httpspwdprivatekeytrust = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_STORE);
  396.             String httpspathkey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_LOCATION);
  397.             String httpstipokey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_TYPE);
  398.             String httpspwdkey = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_PASSWORD);
  399.             String httpspwdprivatekey = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_PASSWORD_PRIVATE_KEY_KEYSTORE);
  400.             String httpsalgoritmokey = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM);
  401.             String httpsKeyAlias = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_ALIAS_PRIVATE_KEY_KEYSTORE);
  402.             String httpsTrustStoreCRLs = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_CRL);
  403.             String httpsTrustStoreOCSPPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY);
  404.             String httpsKeyStoreBYOKPolicy = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_HTTPS_KEY_STORE_BYOK_POLICY);
  405.             if(TipiConnettore.HTTPS.toString().equals(endpointtype)){
  406.                 user = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_USERNAME);
  407.                 password = saHelper.getLockedParameter(ConnettoriCostanti.PARAMETRO_INVOCAZIONE_CREDENZIALI_AUTENTICAZIONE_PASSWORD);
  408.             }
  409.                    
  410.             // file
  411.             String requestOutputFileName = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME);
  412.             String requestOutputFileNamePermissions = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_PERMISSIONS);
  413.             String requestOutputFileNameHeaders = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS);
  414.             String requestOutputFileNameHeadersPermissions = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_FILE_NAME_HEADERS_PERMISSIONS);
  415.             String requestOutputParentDirCreateIfNotExists = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_AUTO_CREATE_DIR);
  416.             String requestOutputOverwriteIfExists = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_REQUEST_OUTPUT_OVERWRITE_FILE_NAME);
  417.             String responseInputMode = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_MODE);
  418.             String responseInputFileName = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME);
  419.             String responseInputFileNameHeaders = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_HEADERS);
  420.             String responseInputDeleteAfterRead = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_FILE_NAME_DELETE_AFTER_READ);
  421.             String responseInputWaitTime = saHelper.getParameter(ConnettoriCostanti.PARAMETRO_CONNETTORE_FILE_RESPONSE_INPUT_WAIT_TIME);
  422.            
  423.            
  424.             //status
  425.             ConnettoreStatusParams connettoreStatusParams = ConnettoreStatusParams.fillFrom(saHelper);
  426.            
  427.             boolean visualizzaModificaCertificato = false;
  428.             boolean visualizzaAddCertificato = false;
  429.             String servletCredenzialiList = null;
  430.             List<Parameter> parametersServletCredenzialiList = null;
  431.             Integer numeroCertificati = 0;
  432.             String servletCredenzialiAdd = null;
  433.            
  434.             boolean integrationManagerEnabled = !saHelper.isModalitaStandard() && saCore.isIntegrationManagerEnabled();
  435.                        
  436.             Boolean isConnettoreCustomUltimaImmagineSalvata = null;
  437.            
  438.             Connettore connisTmp = null;
  439.             List<ExtendedConnettore> listExtendedConnettore =
  440.                     ServletExtendedConnettoreUtils.getExtendedConnettore(connisTmp, ConnettoreServletType.SERVIZIO_APPLICATIVO_ADD, saHelper,
  441.                             (endpointtype==null), endpointtype); // uso endpointtype per capire se รจ la prima volta che entro
  442.            
  443.             long soggLong = -1;
  444.             // se ho fatto la add
  445.             if(useIdSogg &&
  446.                 provider != null && !provider.equals("")){
  447.                 soggLong = Long.parseLong(provider);
  448.             }
  449.            
  450.             String postBackElementName = saHelper.getPostBackElementName();
  451.             String labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;

  452.             // Controllo se ho modificato l'accordo, se si allora suggerisco il referente dell'accordo
  453.             if(postBackElementName != null ){
  454.                 if(!useIdSogg && postBackElementName.equalsIgnoreCase(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROTOCOLLO)) {
  455.                     provider = null;
  456.                 }
  457.                
  458.                 if(postBackElementName.equalsIgnoreCase(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_TIPO_SA) &&
  459.                     isApplicativiServerEnabled) {
  460.                     if(tipoSA.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER)) {
  461.                         tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC;
  462.                         ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE;
  463.                         endpointtype=TipiConnettore.HTTP.toString();
  464.                     }
  465.                     if(tipoSA.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT)) {
  466.                         tipoauthSA = saCore.getAutenticazione_generazioneAutomaticaPorteDelegate();
  467.                         ruoloSA = ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE;
  468.                     }
  469.                
  470.                     if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_FRUITORE.equals(ruoloSA)){
  471.                         ruoloFruitore = TipologiaFruizione.NORMALE.getValue();
  472.                         ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  473.                     }
  474.                     else if(ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_RUOLO_EROGATORE.equals(ruoloSA)){
  475.                         ruoloErogatore = TipologiaErogazione.TRASPARENTE.getValue();
  476.                         ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  477.                     }
  478.                     else{
  479.                         ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  480.                         ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  481.                     }
  482.                 }
  483.                
  484.                 // tipo autenticazione
  485.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_TIPO_AUTENTICAZIONE)){
  486.                     if(tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  487.                         // reset impostazioni sezione ssl
  488.                         tipoCredenzialiSSLSorgente = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO;
  489.                         tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  490.                         tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  491.                         tipoCredenzialiSSLAliasCertificato = "";
  492.                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  493.                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  494.                         tipoCredenzialiSSLAliasCertificatoType= "";
  495.                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  496.                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  497.                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  498.                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  499.                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  500.                         listaAliasEstrattiCertificato = new ArrayList<>();
  501.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  502.                     } else {
  503.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  504.                     }
  505.                 }

  506.                 // tipo di configurazione SSL
  507.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL) ||
  508.                         postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_FILE_CERTIFICATO_LINK_MODIFICA)) {
  509.                     listaAliasEstrattiCertificato = new ArrayList<>();
  510.                     tipoCredenzialiSSLTipoArchivio = ArchiveType.CER;
  511.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  512.                     tipoCredenzialiSSLAliasCertificato = "";
  513.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  514.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  515.                     tipoCredenzialiSSLAliasCertificatoType= "";
  516.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  517.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  518.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  519.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  520.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  521.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  522.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;

  523.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_CONFIGURAZIONE_MANUALE)) {
  524.                         subjectSA = "";
  525.                         issuerSA = "";
  526.                         tipoCredenzialiSSLConfigurazioneManualeSelfSigned = Costanti.CHECK_BOX_DISABLED;
  527.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_NO_WIZARD;
  528.                     }
  529.                 }

  530.                 // cambio il tipo archivio butto via il vecchio certificato            
  531.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_TIPO_ARCHIVIO)) {
  532.                     saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  533.                     tipoCredenzialiSSLAliasCertificato = "";
  534.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  535.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  536.                     tipoCredenzialiSSLAliasCertificatoType= "";
  537.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  538.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  539.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  540.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  541.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  542.                     listaAliasEstrattiCertificato = new ArrayList<>();
  543.                     tipoCredenzialiSSLVerificaTuttiICampi = ConnettoriCostanti.DEFAULT_VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_VERIFICA_TUTTI_CAMPI;
  544.                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  545.                 }

  546.                 // selezione alias
  547.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO)) {
  548.                     if(StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  549.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  550.                     } else {
  551.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  552.                     }
  553.                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  554.                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  555.                     tipoCredenzialiSSLAliasCertificatoType= "";
  556.                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  557.                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  558.                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  559.                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  560.                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  561.                 }
  562.                
  563.                 // apikey
  564.                 if(postBackElementName.equalsIgnoreCase(ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_MULTIPLE_API_KEYS)) {
  565.                     appId = null;
  566.                     apiKey = null;
  567.                 }
  568.             }
  569.            
  570.            
  571.             // Tipi protocollo supportati
  572.             List<String> listaTipiProtocollo = saCore.getProtocolliByFilter(request, session, true, PddTipologia.OPERATIVO, false);
  573.            

  574.             // Preparo il menu
  575.             saHelper.makeMenu();

  576.             if(listaTipiProtocollo.isEmpty()) {
  577.                 if(saCore.isGestionePddAbilitata(saHelper)) {
  578.                     pd.setMessage("Non risultano registrati soggetti associati a porte di dominio di tipo operativo", Costanti.MESSAGE_TYPE_INFO);
  579.                 }
  580.                 else {
  581.                     pd.setMessage("Non risultano registrati soggetti di dominio interno", Costanti.MESSAGE_TYPE_INFO);
  582.                 }
  583.                 pd.disableEditMode();

  584.                 List<DataElement> dati = new ArrayList<>();

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

  586.                 pd.setDati(dati);

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

  588.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI,
  589.                         ForwardParams.ADD());
  590.             }

  591.            
  592.             String superUser = ServletUtils.getUserLoginFromSession(session);

  593.             // Prendo la lista di soggetti
  594.             String soggettoMultitenantSelezionato = null;
  595.             if(!useIdSogg && saHelper.isSoggettoMultitenantSelezionato()) {
  596.                 soggettoMultitenantSelezionato = saHelper.getSoggettoMultitenantSelezionato();
  597.             }
  598.             ServiziApplicativiGeneralInfo generalInfo = ServiziApplicativiUtilities.getGeneralInfo(useIdSogg, provider, listaTipiProtocollo,
  599.                     saCore, saHelper, superUser, singlePdD, soggettoMultitenantSelezionato, dominio);
  600.                    
  601.             String[] soggettiList = generalInfo.getSoggettiList();
  602.             String[] soggettiListLabel = generalInfo.getSoggettiListLabel();
  603.             String tipoProtocollo = generalInfo.getTipoProtocollo();
  604.             String tipoENomeSoggetto = generalInfo.getTipoENomeSoggetto();
  605.             IDSoggetto idSoggetto = generalInfo.getIdSoggetto();
  606.             provider = generalInfo.getProvider();

  607.             boolean isSupportatoAutenticazioneApplicativiEsterni = saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(tipoProtocollo);
  608.             boolean dominioEsterno = false;
  609.             if(isSupportatoAutenticazioneApplicativiEsterni) {
  610.                 dominioEsterno = SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE.equals(dominio);
  611.             }
  612.             if(dominioEsterno &&
  613.                 (soggettiList==null || soggettiList.length<=0)
  614.                 ){
  615.                 pd.setMessage("Non risultano registrati soggetti di dominio esterno", MessageType.ERROR);
  616.                 pd.disableEditMode();

  617.                 List<DataElement> dati = new ArrayList<>();

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

  619.                 pd.setDati(dati);

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

  621.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI,
  622.                         ForwardParams.ADD());
  623.             }
  624.            
  625.            
  626.             String labelApplicativi = ServiziApplicativiCostanti.LABEL_SERVIZI_APPLICATIVI;
  627.             String labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_DI;
  628.             if(!saHelper.isModalitaCompleta()) {
  629.                 labelApplicativi = ServiziApplicativiCostanti.LABEL_APPLICATIVI;
  630.                 labelApplicativiDi = ServiziApplicativiCostanti.LABEL_PARAMETRO_APPLICATIVI_DI;
  631.             }
  632.            
  633.            
  634.             boolean checkWizard = false;
  635.             if(tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  636.                 if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  637.                     if(tipoCredenzialiSSLFileCertificato.getValue() != null && tipoCredenzialiSSLFileCertificato.getValue().length > 0) {
  638.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ALIAS_NON_SCELTO;
  639.                         if(!tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  640.                             if(StringUtils.isNotEmpty(tipoCredenzialiSSLFileCertificatoPassword) ||
  641.                                     (KeystoreType.JKS.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardJksPasswordRequiredRequired()) ||
  642.                                     (KeystoreType.PKCS12.isType(tipoCredenzialiSSLTipoArchivio.name()) && !saCore.isLoadCertificateWizardPkcs12PasswordRequiredRequired())
  643.                                 ) {
  644.                                 try {
  645.                                     listaAliasEstrattiCertificato = ArchiveLoader.readAliases(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLFileCertificatoPassword);
  646.                                     Collections.sort(listaAliasEstrattiCertificato);
  647.    
  648.                                     //se ho un solo alias lo imposto
  649.                                     if(!listaAliasEstrattiCertificato.isEmpty() && listaAliasEstrattiCertificato.size() == 1) {
  650.                                         tipoCredenzialiSSLAliasCertificato = listaAliasEstrattiCertificato.get(0);
  651.                                     }
  652.                                    
  653.                                     // ho appena caricato il file devo solo far vedere la form senza segnalare il messaggio di errore
  654.                                     if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  655.                                             ||oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  656.                                             || oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)) {
  657.                                         checkWizard = true;
  658.                                         if(listaAliasEstrattiCertificato.size() > 1) {
  659.                                             pd.setMessage("Il file caricato contiene pi&ugrave; certificati, selezionare un'"+ConnettoriCostanti.LABEL_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_ALIAS_CERTIFICATO, MessageType.INFO);
  660.                                         }  
  661.                                     }
  662.                                 }catch(UtilsException e) {
  663.                                     pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  664.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  665.                                     tipoCredenzialiSSLAliasCertificato = "";
  666.                                     tipoCredenzialiSSLAliasCertificatoSubject= "";
  667.                                     tipoCredenzialiSSLAliasCertificatoIssuer= "";
  668.                                     tipoCredenzialiSSLAliasCertificatoType= "";
  669.                                     tipoCredenzialiSSLAliasCertificatoVersion= "";
  670.                                     tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  671.                                     tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  672.                                     tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  673.                                     tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  674.                                 }
  675.    
  676.                                 if(!listaAliasEstrattiCertificato.isEmpty() && StringUtils.isNotEmpty(tipoCredenzialiSSLAliasCertificato)) {
  677.                                     try {
  678.                                         Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  679.                                         tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  680.                                         tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  681.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  682.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  683.                                         tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  684.                                         tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  685.                                         tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  686.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  687.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  688.                                     }catch(UtilsException e) {
  689.                                         pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  690.                                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  691.                                         tipoCredenzialiSSLAliasCertificato = "";
  692.                                         tipoCredenzialiSSLAliasCertificatoSubject= "";
  693.                                         tipoCredenzialiSSLAliasCertificatoIssuer= "";
  694.                                         tipoCredenzialiSSLAliasCertificatoType= "";
  695.                                         tipoCredenzialiSSLAliasCertificatoVersion= "";
  696.                                         tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  697.                                         tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  698.                                         tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  699.                                         tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  700.                                     }
  701.                                 }
  702.                             } else {
  703.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE;
  704.                             }
  705.                         } else {
  706.                             try {
  707.                                 Certificate cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  708.                                 tipoCredenzialiSSLAliasCertificatoIssuer = cSelezionato.getCertificate().getIssuer().getNameNormalized();
  709.                                 tipoCredenzialiSSLAliasCertificatoSubject = cSelezionato.getCertificate().getSubject().getNameNormalized();
  710.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned = cSelezionato.getCertificate().isSelfSigned() ? CostantiControlStation.LABEL_SI : CostantiControlStation.LABEL_NO;
  711.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber = cSelezionato.getCertificate().getSerialNumber() + "";
  712.                                 tipoCredenzialiSSLAliasCertificatoType = cSelezionato.getCertificate().getType();
  713.                                 tipoCredenzialiSSLAliasCertificatoVersion = cSelezionato.getCertificate().getVersion() + "";
  714.                                 tipoCredenzialiSSLAliasCertificatoNotBefore = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotBefore());
  715.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = saHelper.getSdfCredenziali().format(cSelezionato.getCertificate().getNotAfter());
  716.                                
  717.                                 // dalla seconda volta che passo, posso salvare, la prima mostro il recap del certificato estratto
  718.                                
  719.                                 if(oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER)||
  720.                                         oldTipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK)) {
  721.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK;
  722.                                 } else {
  723.                                     tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CERTIFICATO_OK_TIPO_CER;
  724.                                     checkWizard = true;
  725.                                 }
  726.                             }catch(UtilsException e) {
  727.                                 pd.setMessage("Il Certificato selezionato non &egrave; valido: "+e.getMessage());
  728.                                 tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO;
  729.                                 tipoCredenzialiSSLAliasCertificato = "";
  730.                                 tipoCredenzialiSSLAliasCertificatoSubject= "";
  731.                                 tipoCredenzialiSSLAliasCertificatoIssuer= "";
  732.                                 tipoCredenzialiSSLAliasCertificatoType= "";
  733.                                 tipoCredenzialiSSLAliasCertificatoVersion= "";
  734.                                 tipoCredenzialiSSLAliasCertificatoSerialNumber= "";
  735.                                 tipoCredenzialiSSLAliasCertificatoSelfSigned= "";
  736.                                 tipoCredenzialiSSLAliasCertificatoNotBefore= "";
  737.                                 tipoCredenzialiSSLAliasCertificatoNotAfter = "";
  738.                             }
  739.                         }
  740.                     } else {
  741.                         tipoCredenzialiSSLWizardStep = ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO;
  742.                     }
  743.                 }
  744.                
  745.                 if(StringUtils.isNotEmpty(tipoCredenzialiSSLWizardStep) && ( tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_CARICA_CERTIFICATO)
  746.                         ||tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_PASSWORD_NON_PRESENTE)
  747.                         || tipoCredenzialiSSLWizardStep.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_WIZARD_STEP_ERRORE_LETTURA_CERTIFICATO)
  748.                         )) {
  749.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  750.                         labelButtonSalva = ConnettoriCostanti.LABEL_BUTTON_INVIA_CARICA_CERTIFICATO;
  751.                     }
  752.                 }else {
  753.                     labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  754.                 }
  755.             } else {
  756.                 labelButtonSalva = Costanti.LABEL_MONITOR_BUTTON_INVIA;
  757.             }
  758.            
  759.             if(labelButtonSalva!= null) {
  760.                 pd.setLabelBottoneInvia(labelButtonSalva);
  761.             }
  762.            
  763.             IDServizioApplicativo idSA = new IDServizioApplicativo();
  764.             idSA.setNome(nome);
  765.             idSA.setIdSoggettoProprietario(idSoggetto);
  766.            
  767.             protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(tipoProtocollo);
  768.             consoleDynamicConfiguration =  protocolFactory.createDynamicConfigurationConsole();
  769.             registryReader = saCore.getRegistryReader(protocolFactory);
  770.             configRegistryReader = saCore.getConfigIntegrationReader(protocolFactory);
  771.             consoleConfiguration = consoleDynamicConfiguration.getDynamicConfigServizioApplicativo(consoleOperationType, saHelper,
  772.                     registryReader, configRegistryReader, idSA);
  773.             protocolProperties = saHelper.estraiProtocolPropertiesDaRequest(consoleConfiguration, consoleOperationType);
  774.            
  775.             boolean tokenWithHttsSupportato = false;
  776.             if(tipoProtocollo!=null) {
  777.                 ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
  778.                 tokenWithHttsSupportato = protocolFactoryManager.getProtocolFactoryByName(tipoProtocollo).createProtocolConfiguration().isSupportatoAutenticazioneApplicativiHttpsConToken();
  779.             }
  780.            
  781.             boolean multipleApiKeysEnabled = false;
  782.             boolean appIdModificabile = ConnettoriCostanti.PARAMETRO_CREDENZIALI_AUTENTICAZIONE_APP_ID_MODIFICABILE;
  783.             if(tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY)) {
  784.                 multipleApiKeysEnabled = ServletUtils.isCheckBoxEnabled(multipleApiKey);
  785.                 if(appIdModificabile && multipleApiKeysEnabled) {
  786.                     boolean saDefined = nome!=null && !"".equals(nome) &&
  787.                             idSoggetto!=null &&
  788.                             idSoggetto.getTipo()!=null && !"".equals(idSoggetto.getTipo()) &&
  789.                             idSoggetto.getNome()!=null && !"".equals(idSoggetto.getNome());
  790.                     if(
  791.                             (appId==null || "".equals(appId))
  792.                             &&
  793.                             ( saDefined )
  794.                         ){
  795.                         appId = saCore.toAppId(tipoProtocollo, idSA, multipleApiKeysEnabled);
  796.                     }
  797.                 }
  798.             }
  799.            
  800.             // Se nomehid = null, devo visualizzare la pagina per l'inserimento
  801.             // dati
  802.             if(saHelper.isEditModeInProgress() || checkWizard){
  803.                
  804.                 if(useIdSogg){
  805.                     ServletUtils.setPageDataTitle(pd,
  806.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  807.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  808.                                     ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  809.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),                            
  810.                                     ServletUtils.getParameterAggiungi()
  811.                             );
  812.                 }else {
  813.                     ServletUtils.setPageDataTitle_ServletAdd(pd, labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST);
  814.                 }

  815.                 if(ruoloFruitore==null || "".equals(ruoloFruitore)){
  816.                     ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  817.                 }
  818.                 if(ruoloErogatore==null || "".equals(ruoloErogatore)){
  819.                     ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  820.                 }
  821.                
  822.                 if(tipoSA == null) {
  823.                     if(isApplicativiServerEnabled)
  824.                         tipoSA = ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_CLIENT;
  825.                     else
  826.                         tipoSA = "";
  827.                 }
  828.                
  829.                 if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout)
  830.                         ||
  831.                         tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout)
  832.                         ||
  833.                         tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ){
  834.                    
  835.                     ConfigurazioneCore configCore = new ConfigurazioneCore(soggettiCore);
  836.                     ConfigurazioneGenerale configGenerale = configCore.getConfigurazioneControlloTraffico();
  837.                    
  838.                     if(tempiRispostaConnectionTimeout==null || "".equals(tempiRispostaConnectionTimeout) ) {
  839.                         tempiRispostaConnectionTimeout = configGenerale.getTempiRispostaErogazione().getConnectionTimeout().intValue()+"";
  840.                     }
  841.                     if(tempiRispostaReadTimeout==null || "".equals(tempiRispostaReadTimeout) ) {
  842.                         tempiRispostaReadTimeout = configGenerale.getTempiRispostaErogazione().getReadTimeout().intValue()+"";
  843.                     }
  844.                     if(tempiRispostaTempoMedioRisposta==null || "".equals(tempiRispostaTempoMedioRisposta) ) {
  845.                         tempiRispostaTempoMedioRisposta = configGenerale.getTempiRispostaErogazione().getTempoMedioRisposta().intValue()+"";
  846.                     }
  847.                    
  848.                 }
  849.                
  850.                 if(dominio==null) {
  851.                     dominio = SoggettiCostanti.SOGGETTO_DOMINIO_OPERATIVO_VALUE;
  852.                 }
  853.                
  854.                 // default (da inizializzare cmq)
  855.                 if (TipiConnettore.HTTPS.toString().equals(endpointtype)) {
  856.                     if(httpsalgoritmo==null || "".equals(httpsalgoritmo)){
  857.                         httpsalgoritmo = TrustManagerFactory.getDefaultAlgorithm();
  858.                     }
  859.                     if(httpsalgoritmokey==null || "".equals(httpsalgoritmokey)){
  860.                         httpsalgoritmokey = KeyManagerFactory.getDefaultAlgorithm();
  861.                     }
  862.                     if(httpstipologia==null || "".equals(httpstipologia)){
  863.                         httpstipologia = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TYPE;
  864.                     }
  865.                     if(httpshostverifyS==null || "".equals(httpshostverifyS)){
  866.                         httpshostverifyS = Costanti.CHECK_BOX_ENABLED_TRUE;
  867.                         httpshostverify = ServletUtils.isCheckBoxEnabled(httpshostverifyS);
  868.                     }
  869.                     if(httpsTrustVerifyCertS==null || "".equals(httpsTrustVerifyCertS)){
  870.                         httpsTrustVerifyCertS = ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS ? Costanti.CHECK_BOX_ENABLED_TRUE : Costanti.CHECK_BOX_DISABLED;
  871.                         httpsTrustVerifyCert = ServletUtils.isCheckBoxEnabled(httpsTrustVerifyCertS);
  872.                     }
  873.                 }
  874.                
  875.                                
  876.                 // preparo i campi
  877.                 List<DataElement> dati = new ArrayList<>();

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

  879.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  880.                         registryReader, configRegistryReader, idSA);
  881.                
  882.                 dati = saHelper.addServizioApplicativoToDati(dati, null, (nome != null ? nome : ""), descrizione, null, (fault != null ? fault : ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_SOAP),
  883.                         TipoOperazione.ADD, 0, contaListe,soggettiList,soggettiListLabel,provider,dominio,
  884.                         utenteSA,passwordSA,subjectSA,principalSA,tipoauthSA,null,null,null,null,sbustamentoInformazioniProtocolloRisposta,
  885.                         ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ADD,null,tipoProtocollo,
  886.                         ruoloFruitore,ruoloErogatore,
  887.                         sbustamento, sbustamentoInformazioniProtocolloRichiesta, getmsg,
  888.                         invrifRichiesta, risprif,
  889.                         endpointtype, autenticazioneHttp, url, nomeCodaJMS, tipoCodaJMS,
  890.                         user, password, initcont, urlpgk,
  891.                         provurl, connfact, sendas,
  892.                         httpsurl, httpstipologia, httpshostverify,
  893.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  894.                         httpsalgoritmo, httpsstato, httpskeystore,
  895.                         httpspwdprivatekeytrust, httpspathkey,
  896.                         httpstipokey, httpspwdkey,
  897.                         httpspwdprivatekey, httpsalgoritmokey,
  898.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  899.                         tipoconn, connettoreDebug,
  900.                         isConnettoreCustomUltimaImmagineSalvata,
  901.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  902.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  903.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  904.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  905.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  906.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  907.                         tipoProtocollo, listaTipiProtocollo, listExtendedConnettore,tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato,tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  908.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  909.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  910.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  911.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA,tipoCredenzialiSSLWizardStep,
  912.                         changepwd,
  913.                         multipleApiKey, appId, apiKey,
  914.                         autenticazioneToken,tokenPolicy, tipoSA, useAsClient,
  915.                         integrationManagerEnabled,
  916.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
  917.                         tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
  918.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  919.                         connettoreStatusParams);

  920.                 // aggiunta campi custom
  921.                 dati = saHelper.addProtocolPropertiesToDatiRegistry(dati, consoleConfiguration,consoleOperationType, protocolProperties);
  922.                
  923.                 dominioEsterno = false;
  924.                 if(isSupportatoAutenticazioneApplicativiEsterni) {
  925.                     dominioEsterno = SoggettiCostanti.SOGGETTO_DOMINIO_ESTERNO_VALUE.equals(dominio);
  926.                 }
  927.                 if(dominioEsterno &&
  928.                     (soggettiList==null || soggettiList.length<=0)
  929.                     ){
  930.                     pd.setMessage("Non risultano registrati soggetti di dominio esterno", MessageType.ERROR);
  931.                 }
  932.                
  933.                 pd.setDati(dati);

  934.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  935.                
  936.                 return ServletUtils.getStrutsForwardEditModeInProgress(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.ADD());
  937.             }

  938.             // Controlli sui campi immessi
  939.             boolean isOk = saHelper.servizioApplicativoCheckData(TipoOperazione.ADD, soggettiList, -1, ruoloFruitore, ruoloErogatore,
  940.                     listExtendedConnettore, null, new StringBuilder());
  941.            
  942.             // updateDynamic
  943.             if(isOk) {
  944.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  945.                         registryReader, configRegistryReader, idSA);
  946.             }
  947.            
  948.             // Validazione base dei parametri custom
  949.             if(isOk){
  950.                 try{
  951.                     saHelper.validaProtocolProperties(consoleConfiguration, consoleOperationType, protocolProperties);
  952.                 }catch(ProtocolException e){
  953.                     ControlStationCore.getLog().error(e.getMessage(),e);
  954.                     pd.setMessage(e.getMessage());
  955.                     isOk = false;
  956.                 }
  957.             }

  958.             // Valido i parametri custom se ho gia' passato tutta la validazione prevista
  959.             if(isOk){
  960.                 try{
  961.                     //validazione campi dinamici
  962.                     consoleDynamicConfiguration.validateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  963.                             registryReader, configRegistryReader, idSA);  
  964.                 }catch(ProtocolException e){
  965.                     ControlStationCore.getLog().error(e.getMessage(),e);
  966.                     pd.setMessage(e.getMessage());
  967.                     isOk = false;
  968.                 }
  969.             }
  970.            
  971.             if (!isOk) {
  972.                
  973.                 // setto la barra del titolo
  974.                 if(useIdSogg){
  975.                     ServletUtils.setPageDataTitle(pd,
  976.                             new Parameter(ServiziApplicativiCostanti.LABEL_PARAMETRO_SERVIZI_APPLICATIVI_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST),
  977.                             new Parameter(labelApplicativiDi + tipoENomeSoggetto,
  978.                                     ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST,
  979.                                     new Parameter(ServiziApplicativiCostanti.PARAMETRO_SERVIZI_APPLICATIVI_PROVIDER,provider)),                            
  980.                                     ServletUtils.getParameterAggiungi()
  981.                             );
  982.                 }else {
  983.                     ServletUtils.setPageDataTitle_ServletAdd(pd, labelApplicativi, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST);
  984.                 }

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

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

  988.                 consoleDynamicConfiguration.updateDynamicConfigServizioApplicativo(consoleConfiguration, consoleOperationType, saHelper, protocolProperties,
  989.                         registryReader, configRegistryReader, idSA);
  990.                
  991.                 dati = saHelper.addServizioApplicativoToDati(dati, null, (nome != null ? nome : ""), descrizione, null, (fault != null ? fault : ServiziApplicativiCostanti.SERVIZI_APPLICATIVI_FAULT_SOAP),
  992.                         TipoOperazione.ADD, 0, contaListe,soggettiList,soggettiListLabel,provider,dominio,
  993.                         utenteSA,passwordSA,subjectSA,principalSA, tipoauthSA,null,null,null,null,sbustamentoInformazioniProtocolloRisposta,
  994.                         ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_ADD,null,tipoProtocollo,
  995.                         ruoloFruitore,ruoloErogatore,
  996.                         sbustamento, sbustamentoInformazioniProtocolloRichiesta, getmsg,
  997.                         invrifRichiesta, risprif,
  998.                         endpointtype, autenticazioneHttp, url, nomeCodaJMS, tipoCodaJMS,
  999.                         user, password, initcont, urlpgk,
  1000.                         provurl, connfact, sendas,
  1001.                         httpsurl, httpstipologia, httpshostverify,
  1002.                         httpsTrustVerifyCert, httpspath, httpstipo, httpspwd,
  1003.                         httpsalgoritmo, httpsstato, httpskeystore,
  1004.                         httpspwdprivatekeytrust, httpspathkey,
  1005.                         httpstipokey, httpspwdkey,
  1006.                         httpspwdprivatekey, httpsalgoritmokey,
  1007.                         httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1008.                         tipoconn, connettoreDebug,
  1009.                         isConnettoreCustomUltimaImmagineSalvata,
  1010.                         proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1011.                         tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1012.                         opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1013.                         requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1014.                         requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1015.                         responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1016.                         tipoProtocollo, listaTipiProtocollo, listExtendedConnettore,tipoCredenzialiSSLSorgente, tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato, tipoCredenzialiSSLFileCertificatoPassword, listaAliasEstrattiCertificato,
  1017.                         tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLAliasCertificatoSubject, tipoCredenzialiSSLAliasCertificatoIssuer,
  1018.                         tipoCredenzialiSSLAliasCertificatoType, tipoCredenzialiSSLAliasCertificatoVersion, tipoCredenzialiSSLAliasCertificatoSerialNumber,
  1019.                         tipoCredenzialiSSLAliasCertificatoSelfSigned, tipoCredenzialiSSLAliasCertificatoNotBefore, tipoCredenzialiSSLAliasCertificatoNotAfter,
  1020.                         tipoCredenzialiSSLVerificaTuttiICampi, tipoCredenzialiSSLConfigurazioneManualeSelfSigned, issuerSA,tipoCredenzialiSSLWizardStep,
  1021.                         changepwd,
  1022.                         multipleApiKey, appId, apiKey,
  1023.                         autenticazioneToken,tokenPolicy, tipoSA, useAsClient,
  1024.                         integrationManagerEnabled,
  1025.                         visualizzaModificaCertificato, visualizzaAddCertificato, servletCredenzialiList, parametersServletCredenzialiList, numeroCertificati, servletCredenzialiAdd,
  1026.                         tokenPolicySA, tokenClientIdSA, tokenWithHttpsEnabledByConfigSA,
  1027.                         autenticazioneApiKey, useOAS3Names, useAppId, apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1028.                         connettoreStatusParams);

  1029.                 // aggiunta campi custom
  1030.                 dati = saHelper.addProtocolPropertiesToDatiRegistry(dati, consoleConfiguration,consoleOperationType, protocolProperties);
  1031.                                
  1032.                 pd.setDati(dati);

  1033.                 ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  1034.                
  1035.                 return ServletUtils.getStrutsForwardEditModeCheckError(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.ADD());
  1036.             }

  1037.             // Inserisco il servizioApplicativo nel db
  1038.            
  1039.             boolean secret = false;
  1040.             String secretPassword  = null;
  1041.             String secretUser = null;
  1042.             boolean secretAppId = false;
  1043.            
  1044.             ServizioApplicativo sa = null;
  1045.             try {
  1046.                 if(isApplicativiServerEnabled && tipoSA.equals(ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER)) {
  1047.                     StatoFunzionalita im = StatoFunzionalita.toEnumConstant(getmsg);
  1048.                     if(StatoFunzionalita.ABILITATO.equals(im)) {
  1049.                         tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC;
  1050.                     }
  1051.                     else {
  1052.                         tipoauthSA = ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA;
  1053.                     }
  1054.                 }

  1055.                 int idProv = Integer.parseInt(provider);

  1056.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC)) {
  1057.                     subjectSA = "";
  1058.                     principalSA = "";
  1059.                     tokenPolicySA = null;
  1060.                     tokenClientIdSA = null;
  1061.                 }
  1062.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY)) {
  1063.                     subjectSA = "";
  1064.                     principalSA = "";
  1065.                     tokenPolicySA = null;
  1066.                     tokenClientIdSA = null;
  1067.                 }
  1068.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL)) {
  1069.                     if(!tokenWithHttsSupportato || !tokenWithHttpsEnabledByConfigSA) {
  1070.                         tokenPolicySA = null;
  1071.                         tokenClientIdSA = null;
  1072.                     }
  1073.                     utenteSA = "";
  1074.                     passwordSA = "";
  1075.                     principalSA = "";
  1076.                 }
  1077.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_PRINCIPAL)) {
  1078.                     utenteSA = "";
  1079.                     passwordSA = "";
  1080.                     subjectSA = "";
  1081.                     tokenPolicySA = null;
  1082.                     tokenClientIdSA = null;
  1083.                 }
  1084.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_TOKEN)) {
  1085.                     utenteSA = "";
  1086.                     passwordSA = "";
  1087.                     subjectSA = "";
  1088.                     principalSA = "";
  1089.                 }
  1090.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)) {
  1091.                     utenteSA = "";
  1092.                     passwordSA = "";
  1093.                     subjectSA = "";
  1094.                     principalSA = "";
  1095.                     tokenPolicySA = null;
  1096.                     tokenClientIdSA = null;
  1097.                 }

  1098.                 Soggetto soggettoRegistro = null;
  1099.                 org.openspcoop2.core.config.Soggetto soggettoConfig = null;
  1100.                 if(saCore.isRegistroServiziLocale()){
  1101.                     soggettoRegistro = soggettiCore.getSoggettoRegistro(idProv);
  1102.                 }else{
  1103.                     soggettoConfig = soggettiCore.getSoggetto(idProv);
  1104.                 }

  1105.                 InvocazioneCredenziali credenzialiInvocazione = new InvocazioneCredenziali();
  1106.                 credenzialiInvocazione.setUser("");
  1107.                 credenzialiInvocazione.setPassword("");

  1108.                 sa = new ServizioApplicativo();
  1109.                 sa.setNome(nome);
  1110.                 sa.setDescrizione(descrizione);

  1111.                 if(ruoloFruitore==null){
  1112.                     ruoloFruitore = TipologiaFruizione.DISABILITATO.getValue();
  1113.                 }
  1114.                 if(ruoloErogatore==null){
  1115.                     ruoloErogatore = TipologiaErogazione.DISABILITATO.getValue();
  1116.                 }
  1117.                 sa.setTipologiaFruizione(ruoloFruitore);
  1118.                 sa.setTipologiaErogazione(ruoloErogatore);
  1119.                
  1120.                 if("".equals(tipoSA))
  1121.                     tipoSA = null;
  1122.                
  1123.                 sa.setTipo(tipoSA);
  1124.                 sa.setUseAsClient(useAsClient);
  1125.                
  1126.                 if(saCore.isRegistroServiziLocale()){
  1127.                     sa.setIdSoggetto(soggettoRegistro.getId());
  1128.                     sa.setNomeSoggettoProprietario(soggettoRegistro.getNome());
  1129.                     sa.setTipoSoggettoProprietario(soggettoRegistro.getTipo());
  1130.                 }else{
  1131.                     sa.setIdSoggetto(soggettoConfig.getId());
  1132.                     sa.setNomeSoggettoProprietario(soggettoConfig.getNome());
  1133.                     sa.setTipoSoggettoProprietario(soggettoConfig.getTipo());
  1134.                 }

  1135.                 // *** risposta asinc ***
  1136.                 RispostaAsincrona rispostaAsinc = new RispostaAsincrona();
  1137.                 rispostaAsinc.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
  1138.                 rispostaAsinc.setCredenziali(credenzialiInvocazione);
  1139.                 rispostaAsinc.setGetMessage(CostantiConfigurazione.DISABILITATO);

  1140.                 sa.setRispostaAsincrona(rispostaAsinc);

  1141.                 // *** Invocazione servizio ***
  1142.                 InvocazioneServizio invServizio = new InvocazioneServizio();
  1143.                
  1144.                 boolean connettoreDisabilitato = (interfacciaAvanzata || TipologiaErogazione.DISABILITATO.getValue().equals(ruoloErogatore));
  1145.                 if(isApplicativiServerEnabled && ServiziApplicativiCostanti.VALUE_SERVIZI_APPLICATIVI_TIPO_SERVER.equals(tipoSA)) {
  1146.                     connettoreDisabilitato = false;
  1147.                 }
  1148.                
  1149.                 if(connettoreDisabilitato){
  1150.                     invServizio.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
  1151.                     invServizio.setCredenziali(credenzialiInvocazione);
  1152.                     invServizio.setGetMessage(CostantiConfigurazione.DISABILITATO);
  1153.                 }
  1154.                 else{
  1155.                     if(sbustamento==null){
  1156.                         invServizio.setSbustamentoSoap(CostantiConfigurazione.DISABILITATO);
  1157.                     }else{
  1158.                         invServizio.setSbustamentoSoap(StatoFunzionalita.toEnumConstant(sbustamento));
  1159.                     }
  1160.                     if(sbustamentoInformazioniProtocolloRichiesta==null){
  1161.                         invServizio.setSbustamentoInformazioniProtocollo(CostantiConfigurazione.ABILITATO);
  1162.                     }else{
  1163.                         invServizio.setSbustamentoInformazioniProtocollo(StatoFunzionalita.toEnumConstant(sbustamentoInformazioniProtocolloRichiesta));
  1164.                     }
  1165.                     invServizio.setGetMessage(StatoFunzionalita.toEnumConstant(getmsg));
  1166.                     invServizio.setInvioPerRiferimento(StatoFunzionalita.toEnumConstant(invrifRichiesta));
  1167.                     invServizio.setRispostaPerRiferimento(StatoFunzionalita.toEnumConstant(risprif));
  1168.                     InvocazioneCredenziali cis = null;
  1169.                     if (tipoauthRichiesta!=null && tipoauthRichiesta.equals(CostantiConfigurazione.INVOCAZIONE_SERVIZIO_AUTENTICAZIONE_BASIC.toString())) {
  1170.                         if (cis == null) {
  1171.                             cis = new InvocazioneCredenziali();
  1172.                         }
  1173.                         cis.setUser(user);
  1174.                         cis.setPassword(password);
  1175.                         invServizio.setCredenziali(cis);
  1176.                         invServizio.setAutenticazione(InvocazioneServizioTipoAutenticazione.BASIC);
  1177.                     }
  1178.                     else if(endpointtype.equals(TipiConnettore.JMS.toString())){
  1179.                         if(user!=null && password!=null){
  1180.                             if (cis == null) {
  1181.                                 cis = new InvocazioneCredenziali();
  1182.                             }
  1183.                             cis.setUser(user);
  1184.                             cis.setPassword(password);
  1185.                         }
  1186.                         invServizio.setCredenziali(cis);
  1187.                         invServizio.setAutenticazione(InvocazioneServizioTipoAutenticazione.BASIC);
  1188.                     }
  1189.                     else {
  1190.                         invServizio.setCredenziali(null);
  1191.                         invServizio.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
  1192.                     }
  1193.                     Connettore connis = invServizio.getConnettore();
  1194.                     if(connis==null){
  1195.                         connis = new Connettore();
  1196.                     }
  1197.                     String oldConnT = connis.getTipo();
  1198.                     if ( (connis.getCustom()!=null && connis.getCustom()) &&
  1199.                             !connis.getTipo().equals(TipiConnettore.HTTPS.toString()) &&
  1200.                             !connis.getTipo().equals(TipiConnettore.FILE.toString()) &&
  1201.                             !connis.getTipo().equals(TipiConnettore.STATUS.toString()))
  1202.                         oldConnT = TipiConnettore.CUSTOM.toString();
  1203.                     saHelper.fillConnettore(connis, connettoreDebug, endpointtype, oldConnT, tipoconn, url,
  1204.                             nomeCodaJMS, tipoCodaJMS, user, password,
  1205.                             initcont, urlpgk, provurl, connfact,
  1206.                             sendas, httpsurl, httpstipologia, httpshostverify,
  1207.                             httpsTrustVerifyCert, httpspath, httpstipo,
  1208.                             httpspwd, httpsalgoritmo, httpsstato,
  1209.                             httpskeystore, httpspwdprivatekeytrust,
  1210.                             httpspathkey, httpstipokey,
  1211.                             httpspwdkey, httpspwdprivatekey,
  1212.                             httpsalgoritmokey,
  1213.                             httpsKeyAlias, httpsTrustStoreCRLs, httpsTrustStoreOCSPPolicy, httpsKeyStoreBYOKPolicy,
  1214.                             proxyEnabled, proxyHostname, proxyPort, proxyUsername, proxyPassword,
  1215.                             tempiRispostaEnabled, tempiRispostaConnectionTimeout, tempiRispostaReadTimeout, tempiRispostaTempoMedioRisposta,
  1216.                             opzioniAvanzate, transferMode, transferModeChunkSize, redirectMode, redirectMaxHop,
  1217.                             requestOutputFileName, requestOutputFileNamePermissions, requestOutputFileNameHeaders, requestOutputFileNameHeadersPermissions,
  1218.                             requestOutputParentDirCreateIfNotExists,requestOutputOverwriteIfExists,
  1219.                             responseInputMode, responseInputFileName, responseInputFileNameHeaders, responseInputDeleteAfterRead, responseInputWaitTime,
  1220.                             tokenPolicy,
  1221.                             apiKeyHeader, apiKeyValue, appIdHeader, appIdValue,
  1222.                             connettoreStatusParams,
  1223.                             listExtendedConnettore);
  1224.                     invServizio.setConnettore(connis);
  1225.                 }
  1226.                 sa.setInvocazioneServizio(invServizio);

  1227.                 // *** Invocazione Porta ***
  1228.                 InvocazionePorta invocazionePorta = new InvocazionePorta();
  1229.                 Credenziali credenziali = new Credenziali();
  1230.                 if (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_NESSUNA)) {
  1231.                     credenziali.setTipo(null);
  1232.                 }else{
  1233.                     credenziali.setTipo(CredenzialeTipo.toEnumConstant(tipoauthSA));
  1234.                 }
  1235.                 credenziali.setUser(utenteSA);
  1236.                 if(principalSA!=null && !"".equals(principalSA)){
  1237.                     credenziali.setUser(principalSA); // al posto di user
  1238.                 }
  1239.                 if(tokenClientIdSA!=null && !"".equals(tokenClientIdSA)){
  1240.                     credenziali.setUser(tokenClientIdSA); // al posto di user
  1241.                 }
  1242.                 credenziali.setPassword(passwordSA);
  1243.                 credenziali.setTokenPolicy(tokenPolicySA);
  1244.                
  1245.                 ApiKey apiKeyGenerated = null;
  1246.                 if(tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY)) {
  1247.                     credenziali.setAppId(multipleApiKeysEnabled);
  1248.                     if(multipleApiKeysEnabled) {
  1249.                         apiKeyGenerated = saCore.newMultipleApiKey();
  1250.                         if(!appIdModificabile) {
  1251.                             appId = saCore.toAppId(tipoProtocollo, idSA, multipleApiKeysEnabled);
  1252.                         }
  1253.                     }
  1254.                     else {
  1255.                         appId = saCore.toAppId(tipoProtocollo, idSA,multipleApiKeysEnabled);
  1256.                         apiKeyGenerated = saCore.newApiKey(tipoProtocollo, idSA);
  1257.                     }
  1258.                     credenziali.setUser(appId);
  1259.                     credenziali.setPassword(apiKeyGenerated.getPassword());
  1260.                 }
  1261.                 else {
  1262.                     credenziali.setAppId(false);
  1263.                 }
  1264.                
  1265.                 if(saCore.isApplicativiPasswordEncryptEnabled() &&
  1266.                     (tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_BASIC) || tipoauthSA.equals(ConnettoriCostanti.AUTENTICAZIONE_TIPO_APIKEY))
  1267.                     ){
  1268.                     secret = true;
  1269.                     secretUser = credenziali.getUser();
  1270.                     if (apiKeyGenerated!=null) {
  1271.                         secretPassword = apiKeyGenerated.getApiKey();
  1272.                     }
  1273.                     else {
  1274.                         secretPassword = credenziali.getPassword();
  1275.                     }
  1276.                     secretAppId = credenziali.isAppId();
  1277.                 }
  1278.                
  1279.                 if(ConnettoriCostanti.AUTENTICAZIONE_TIPO_SSL.equals(tipoauthSA)) {
  1280.                     if(tipoCredenzialiSSLSorgente.equals(ConnettoriCostanti.VALUE_PARAMETRO_CREDENZIALI_AUTENTICAZIONE_CONFIGURAZIONE_SSL_UPLOAD_CERTIFICATO)) {
  1281.                         Certificate cSelezionato = null;
  1282.                         if(tipoCredenzialiSSLTipoArchivio.equals(ArchiveType.CER)) {
  1283.                             cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLFileCertificato.getValue());
  1284.                         }else {
  1285.                             cSelezionato = ArchiveLoader.load(tipoCredenzialiSSLTipoArchivio, tipoCredenzialiSSLFileCertificato.getValue(), tipoCredenzialiSSLAliasCertificato, tipoCredenzialiSSLFileCertificatoPassword);
  1286.                         }

  1287.                         credenziali.setCertificateStrictVerification(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLVerificaTuttiICampi));
  1288.                         credenziali.setCnIssuer(cSelezionato.getCertificate().getIssuer().getCN());
  1289.                         credenziali.setCnSubject(cSelezionato.getCertificate().getSubject().getCN());
  1290.                         credenziali.setCertificate(cSelezionato.getCertificate().getCertificate().getEncoded());
  1291.                     } else { // configurazione manuale
  1292.                         credenziali.setSubject(subjectSA);
  1293.                         if(ServletUtils.isCheckBoxEnabled(tipoCredenzialiSSLConfigurazioneManualeSelfSigned)) {
  1294.                             credenziali.setIssuer(subjectSA);
  1295.                         } else {
  1296.                             credenziali.setIssuer(issuerSA);
  1297.                         }
  1298.                     }
  1299.                 }
  1300.                
  1301.                 invocazionePorta.addCredenziali(credenziali);
  1302.                
  1303.                 if(interfacciaAvanzata && !isApplicativiServerEnabled &&
  1304.                     credenziali.getTipo()!=null){
  1305.                     sa.setTipologiaFruizione(TipologiaFruizione.NORMALE.getValue());
  1306.                 }
  1307.                
  1308.                 InvocazionePortaGestioneErrore ipge = new InvocazionePortaGestioneErrore();
  1309.                 ipge.setFault(FaultIntegrazioneTipo.toEnumConstant(fault));
  1310.                 invocazionePorta.setGestioneErrore(ipge);
  1311.                
  1312.                 invocazionePorta.setSbustamentoInformazioniProtocollo(StatoFunzionalita.toEnumConstant(sbustamentoInformazioniProtocolloRisposta));

  1313.                 sa.setInvocazionePorta(invocazionePorta);
  1314.                
  1315.                 //imposto properties custom
  1316.                 sa.setProtocolPropertyList(ProtocolPropertiesUtils.toProtocolPropertiesConfig(protocolProperties, consoleOperationType,null));
  1317.                
  1318.                 saCore.performCreateOperation(superUser, saHelper.smista(), sa);

  1319.                 saHelper.deleteBinaryParameters(tipoCredenzialiSSLFileCertificato);
  1320.             } catch (Exception ex) {
  1321.                 return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), ex, pd, request, session, gd, mapping,
  1322.                         ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.ADD());
  1323.             }

  1324.             // Messaggio 'Please Copy'
  1325.             if(secret) {
  1326.                 saHelper.setSecretPleaseCopy(secretPassword, secretUser, secretAppId, tipoauthSA, OggettoDialogEnum.APPLICATIVO, sa.getNome());
  1327.             }
  1328.            
  1329.             // Preparo la lista
  1330.             ConsoleSearch ricerca = (ConsoleSearch) ServletUtils.getSearchObjectFromSession(request, session, ConsoleSearch.class);

  1331.             List<ServizioApplicativo> lista = null;

  1332.             if(!useIdSogg){
  1333.                 int idLista = Liste.SERVIZIO_APPLICATIVO;
  1334.                 ricerca = saHelper.checkSearchParameters(idLista, ricerca);
  1335.                
  1336.                 if(saCore.isSetSearchAfterAdd()) {
  1337.                     saCore.setSearchAfterAdd(idLista, sa.getNome(), request, session, ricerca);
  1338.                 }
  1339.                
  1340.                 boolean filtroSoggetto = false;
  1341.                 if(saHelper.isSoggettoMultitenantSelezionato()) {
  1342.                     List<String> protocolli = saCore.getProtocolli(request, session,false);
  1343.                     if(protocolli!=null && protocolli.size()==1) { // dovrebbe essere l'unico caso in cui un soggetto multitenant รจ selezionato
  1344.                         String protocollo = protocolli.get(0);
  1345.                         filtroSoggetto = !saCore.isSupportatoAutenticazioneApplicativiEsterniErogazione(protocollo);  // devono essere fatti vedere anche quelli
  1346.                     }
  1347.                 }
  1348.                 if(filtroSoggetto) {
  1349.                     ricerca.addFilter(idLista, Filtri.FILTRO_SOGGETTO, saHelper.getSoggettoMultitenantSelezionato());
  1350.                 }
  1351.                
  1352.                 if(saCore.isVisioneOggettiGlobale(superUser)){
  1353.                     lista = saCore.soggettiServizioApplicativoList(null, ricerca);
  1354.                 }else{
  1355.                     lista = saCore.soggettiServizioApplicativoList(superUser, ricerca);
  1356.                 }
  1357.             }else {
  1358.                 int idLista = Liste.SERVIZI_APPLICATIVI_BY_SOGGETTO;
  1359.                 ricerca = saHelper.checkSearchParameters(idLista, ricerca);
  1360.                 lista = saCore.soggettiServizioApplicativoList(ricerca,soggLong);
  1361.             }

  1362.             saHelper.prepareServizioApplicativoList(ricerca, lista, useIdSogg);

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

  1364.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.ADD());

  1365.         } catch (Exception e) {
  1366.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  1367.                     ServiziApplicativiCostanti.OBJECT_NAME_SERVIZI_APPLICATIVI, ForwardParams.ADD());
  1368.         }

  1369.     }

  1370. }