ForwardProxy.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.pdd.config;

  21. import java.io.Serializable;

  22. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  23. import org.openspcoop2.core.id.IDAccordo;
  24. import org.openspcoop2.core.id.IDGenericProperties;
  25. import org.openspcoop2.core.id.IDServizio;
  26. import org.openspcoop2.core.id.IDSoggetto;
  27. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  28. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  29. import org.openspcoop2.core.registry.GruppoAccordo;
  30. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  31. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  32. import org.openspcoop2.protocol.registry.RegistroServiziManager;
  33. import org.openspcoop2.protocol.sdk.ProtocolException;
  34. import org.openspcoop2.protocol.sdk.state.RequestInfo;

  35. /**
  36.  * ForwardProxy
  37.  *
  38.  *
  39.  * @author Poli Andrea (apoli@link.it)
  40.  * @author $Author$
  41.  * @version $Rev$, $Date$
  42.  */
  43. public class ForwardProxy implements Serializable {

  44.     /**
  45.      *
  46.      */
  47.     private static final long serialVersionUID = 1L;
  48.    
  49.     public static final String GOVWAY_SEPARATORE = "-";
  50.    
  51.     public static final String GOVWAY_PREFISSO_TAG_PROXY = "tag"+GOVWAY_SEPARATORE;
  52.     public static final String GOVWAY_PREFISSO_DOMINIO_PROXY = "dominio"+GOVWAY_SEPARATORE;
  53.     public static final String GOVWAY_PREFISSO_PROTOCOLLO_PROXY = "profilo"+GOVWAY_SEPARATORE;
  54.    
  55.     public static final String GOVWAY_PROXY_ENABLED = "govway-proxy-enable";
  56.    
  57.     public static final String GOVWAY_PROXY = "govway-proxy";
  58.     public static final String GOVWAY_FRUIZIONI_PROXY = "govway-fruizioni-proxy";
  59.     public static final String GOVWAY_EROGAZIONI_PROXY = "govway-erogazioni-proxy";
  60.    
  61.     public static final String GOVWAY_PROXY_HEADER = "govway-proxy-header";
  62.     public static final String GOVWAY_FRUIZIONI_PROXY_HEADER = "govway-fruizioni-proxy-header";
  63.     public static final String GOVWAY_EROGAZIONI_PROXY_HEADER = "govway-erogazioni-proxy-header";
  64.     public static final String GOVWAY_PROXY_HEADER_BASE64 = "govway-proxy-header-base64";
  65.     public static final String GOVWAY_FRUIZIONI_PROXY_HEADER_BASE64 = "govway-fruizioni-proxy-header-base64";
  66.     public static final String GOVWAY_EROGAZIONI_PROXY_HEADER_BASE64 = "govway-erogazioni-proxy-header-base64";
  67.    
  68.     public static final String GOVWAY_PROXY_QUERY = "govway-proxy-query";
  69.     public static final String GOVWAY_FRUIZIONI_PROXY_QUERY = "govway-fruizioni-proxy-query";
  70.     public static final String GOVWAY_EROGAZIONI_PROXY_QUERY = "govway-erogazioni-proxy-query";
  71.     public static final String GOVWAY_PROXY_QUERY_BASE64 = "govway-proxy-query-base64";
  72.     public static final String GOVWAY_FRUIZIONI_PROXY_QUERY_BASE64 = "govway-fruizioni-proxy-query-base64";
  73.     public static final String GOVWAY_EROGAZIONI_PROXY_QUERY_BASE64 = "govway-erogazioni-proxy-query-base64";
  74.    
  75.     public static final String DEFAULT_GOVWAY_PROXY_HEADER = "GovWay-APIAddress";
  76.     public static final boolean DEFAULT_GOVWAY_PROXY_HEADER_BASE64 = false;
  77.     public static final String DEFAULT_GOVWAY_PROXY_QUERY = "govway_api_address";
  78.     public static final boolean DEFAULT_GOVWAY_PROXY_QUERY_BASE64 = false;
  79.    
  80.     public static final String GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY = "govway-proxy-token-dynamic-discovery";
  81.     public static final String GOVWAY_FRUIZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY = "govway-fruizioni-proxy-token-dynamic-discovery";
  82.     public static final String GOVWAY_EROGAZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY = "govway-erogazioni-proxy-token-dynamic-discovery";
  83.     public static final String GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT = "govway-proxy-token-jwt-validation";
  84.     public static final String GOVWAY_FRUIZIONI_PROXY_TOKEN_VALIDAZIONE_JWT = "govway-fruizioni-proxy-token-jwt-validation";
  85.     public static final String GOVWAY_EROGAZIONI_PROXY_TOKEN_VALIDAZIONE_JWT = "govway-erogazioni-proxy-token-jwt-validation";
  86.     public static final String GOVWAY_PROXY_TOKEN_INTROSPECTION = "govway-proxy-token-introspection";
  87.     public static final String GOVWAY_FRUIZIONI_PROXY_TOKEN_INTROSPECTION = "govway-fruizioni-proxy-token-introspection";
  88.     public static final String GOVWAY_EROGAZIONI_PROXY_TOKEN_INTROSPECTION = "govway-erogazioni-proxy-token-introspection";
  89.     public static final String GOVWAY_PROXY_TOKEN_USERINFO = "govway-proxy-token-userinfo";
  90.     public static final String GOVWAY_FRUIZIONI_PROXY_TOKEN_USERINFO = "govway-fruizioni-proxy-token-userinfo";
  91.     public static final String GOVWAY_EROGAZIONI_PROXY_TOKEN_USERINFO = "govway-erogazioni-proxy-token-userinfo";
  92.    
  93.     public static final String GOVWAY_PROXY_TOKEN_RETRIEVE = "govway-proxy-token-retrieve";
  94.     public static final String GOVWAY_FRUIZIONI_PROXY_TOKEN_RETRIEVE = "govway-fruizioni-proxy-token-retrieve";
  95.     public static final String GOVWAY_EROGAZIONI_PROXY_TOKEN_RETRIEVE = "govway-erogazioni-proxy-token-retrieve";
  96.    
  97.     public static final String GOVWAY_PROXY_ATTRIBUTE_AUTHORITY = "govway-proxy-attribute-authority";
  98.     public static final String GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY = "govway-fruizioni-proxy-attribute-authority";
  99.     public static final String GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY = "govway-erogazioni-proxy-attribute-authority";
  100.     public static final String GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION = "govway-proxy-attribute-authority-response-jwt-validation";
  101.     public static final String GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION = "govway-fruizioni-proxy-attribute-authority-response-jwt-validation";
  102.     public static final String GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION = "govway-erogazioni-proxy-attribute-authority-response-jwt-validation";
  103.    
  104.     public static final boolean DEFAULT_GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY = false;
  105.     public static final boolean DEFAULT_GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT = false;
  106.     public static final boolean DEFAULT_GOVWAY_PROXY_TOKEN_INTROSPECTION = false;
  107.     public static final boolean DEFAULT_GOVWAY_PROXY_TOKEN_USERINFO = false;
  108.    
  109.     public static final boolean DEFAULT_GOVWAY_PROXY_TOKEN_RETRIEVE = false;
  110.    
  111.     public static final boolean DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY = false;
  112.     public static final boolean DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION = false;
  113.    
  114.     private static final String TRUE = "true";
  115.     private static final String FALSE = "false";
  116.    
  117.     public static boolean isProxyEnabled() {
  118.         String enable = System.getProperty(GOVWAY_PROXY_ENABLED);
  119.         if(enable!=null && !"".equals(enable)) {
  120.             return TRUE.equalsIgnoreCase(enable);
  121.         }
  122.         return OpenSPCoop2Properties.getInstance().isForwardProxyEnable();
  123.     }
  124.    
  125.    
  126.     public static ForwardProxy getProxyConfigurazione(boolean fruizione, IDSoggetto dominio, IDServizio idServizio, IDGenericProperties policy, RequestInfo requestInfo) throws DriverConfigurazioneException{
  127.        
  128.         try {
  129.            
  130.             // **** Configurazione di default ****
  131.            
  132.             // Cerco se ne esiste una specifica per il protocollo e la fruizione/erogazione
  133.             ForwardProxyConfigurazione defaultConfig = readForwardProxyConfigurazione(true, dominio.getTipo(), fruizione);
  134.            
  135.             // Cerco se ne esiste una specifica per il protocollo che vale sia per la fruizione che per l'erogazione
  136.             if(defaultConfig==null) {
  137.                 defaultConfig = readForwardProxyConfigurazione(true, dominio.getTipo(), null);
  138.             }
  139.            
  140.             // Cerco se ne esiste una specifica per la fruizione/erogazione
  141.             if(defaultConfig==null) {
  142.                 defaultConfig = readForwardProxyConfigurazione(false, null, fruizione);
  143.             }
  144.            
  145.             // Cerco se ne esiste una che vale sia per la fruizione che per l'erogazione
  146.             if(defaultConfig==null) {
  147.                 defaultConfig = readForwardProxyConfigurazione(false, null, null);
  148.             }
  149.            
  150.             // Configurazione di default
  151.             if(defaultConfig==null) {
  152.                 defaultConfig = OpenSPCoop2Properties.getInstance().getForwardProxyConfigurazioneDefault();
  153.             }
  154.            
  155.            
  156.             // **** Configurazione di default per la gestione dei token ****
  157.            
  158.             ForwardProxyConfigurazioneToken defaultConfigToken = null;
  159.            
  160.             if(policy!=null && policy.getNome()!=null) { // chiamata arriva da una token policy
  161.            
  162.                 // Cerco se ne esiste una specifica per il protocollo e la fruizione/erogazione con il nome della policy
  163.                 defaultConfigToken = readForwardProxyConfigurazioneToken(true, dominio.getTipo(), fruizione, policy);
  164.                
  165.                 // Cerco se ne esiste una specifica per il protocollo che vale sia per la fruizione che per l'erogazione con il nome della policy
  166.                 if(defaultConfigToken==null) {
  167.                     defaultConfigToken = readForwardProxyConfigurazioneToken(true, dominio.getTipo(), null, policy);
  168.                 }
  169.                
  170.                 // Cerco se ne esiste una specifica per la fruizione/erogazione con il nome della policy
  171.                 if(defaultConfigToken==null) {
  172.                     defaultConfigToken = readForwardProxyConfigurazioneToken(false, null, fruizione, policy);
  173.                 }
  174.                
  175.                 // Cerco se ne esiste una che vale sia per la fruizione che per l'erogazione con il nome della policy
  176.                 if(defaultConfigToken==null) {
  177.                     defaultConfigToken = readForwardProxyConfigurazioneToken(false, null, null, policy);
  178.                 }
  179.                
  180.             }
  181.            
  182.             // Cerco se ne esiste una specifica per il protocollo e la fruizione/erogazione per qualsiasi policy
  183.             if(defaultConfigToken==null) {
  184.                 defaultConfigToken = readForwardProxyConfigurazioneToken(true, dominio.getTipo(), fruizione, null);
  185.             }
  186.            
  187.             // Cerco se ne esiste una specifica per il protocollo che vale sia per la fruizione che per l'erogazione per qualsiasi policy
  188.             if(defaultConfigToken==null) {
  189.                 defaultConfigToken = readForwardProxyConfigurazioneToken(true, dominio.getTipo(), null, null);
  190.             }
  191.            
  192.             // Cerco se ne esiste una specifica per la fruizione/erogazione per qualsiasi policy
  193.             if(defaultConfigToken==null) {
  194.                 defaultConfigToken = readForwardProxyConfigurazioneToken(false, null, fruizione, null);
  195.             }
  196.            
  197.             // Cerco se ne esiste una che vale sia per la fruizione che per l'erogazione per qualsiasi policy
  198.             if(defaultConfigToken==null) {
  199.                 defaultConfigToken = readForwardProxyConfigurazioneToken(false, null, null, null);
  200.             }
  201.            
  202.             // Configurazione di default
  203.             if(defaultConfigToken==null) {
  204.                 defaultConfigToken = OpenSPCoop2Properties.getInstance().getForwardProxyConfigurazioneTokenDefault();
  205.             }
  206.                    
  207.            
  208.            
  209.             // **** Regola ****
  210.            
  211.             // primo cerco per tag
  212.             RegistroServiziManager registroServiziManager = RegistroServiziManager.getInstance();
  213.             AccordoServizioParteSpecifica asps = registroServiziManager.getAccordoServizioParteSpecifica(idServizio, null, false, requestInfo);
  214.             IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(asps.getAccordoServizioParteComune());
  215.             AccordoServizioParteComune aspc = registroServiziManager.getAccordoServizioParteComune(idAccordo, null, false, false, requestInfo);
  216.             if(aspc.getGruppi()!=null && aspc.getGruppi().sizeGruppoList()>0) {
  217.                 for (GruppoAccordo gruppo : aspc.getGruppi().getGruppoList()) {
  218.                     // prima per specifica fruizione/erogazione
  219.                     ForwardProxy regola = ForwardProxy.readForwardProxyTag(gruppo.getNome(), fruizione, policy,
  220.                             defaultConfig, defaultConfigToken);
  221.                     if(regola!=null && regola.isEnabled()) {
  222.                         return regola;
  223.                     }
  224.                     // poi per configurazione che vale sia per la fruizione che per l'erogazione
  225.                     regola = ForwardProxy.readForwardProxyTag(gruppo.getNome(), null, policy,
  226.                             defaultConfig, defaultConfigToken);
  227.                     if(regola!=null && regola.isEnabled()) {
  228.                         return regola;
  229.                     }
  230.                 }
  231.             }
  232.            
  233.             // poi cerco per dominio
  234.            
  235.             // prima per specifico tipo (es. modipa, gw, aoo, spc) e nome soggetto per specifica fruizione/erogazione
  236.             ForwardProxy regola = ForwardProxy.readConfigurazioneDominioByTipo(dominio.getTipo(), dominio.getNome(), fruizione, policy,
  237.                     defaultConfig, defaultConfigToken);
  238.             if(regola!=null && regola.isEnabled()) {
  239.                 return regola;
  240.             }
  241.             // poi per specifico tipo (es. modipa, gw, aoo, spc) e nome soggetto che vale sia per la fruizione che per l'erogazione
  242.             regola = ForwardProxy.readConfigurazioneDominioByTipo(dominio.getTipo(), dominio.getNome(), null, policy,
  243.                     defaultConfig, defaultConfigToken);
  244.             if(regola!=null && regola.isEnabled()) {
  245.                 return regola;
  246.             }
  247.            
  248.             // poi piĂ¹ generico sul protocollo e nome soggetto per specifica fruizione/erogazione
  249.             regola = ForwardProxy.readConfigurazioneDominioByProtocollo(dominio.getTipo(), dominio.getNome(), fruizione, policy,
  250.                     defaultConfig, defaultConfigToken);
  251.             if(regola!=null && regola.isEnabled()) {
  252.                 return regola;
  253.             }
  254.             // poi piĂ¹ generico sul protocollo e nome soggetto che vale sia per la fruizione che per l'erogazione
  255.             regola = ForwardProxy.readConfigurazioneDominioByProtocollo(dominio.getTipo(), dominio.getNome(), null, policy,
  256.                     defaultConfig, defaultConfigToken);
  257.             if(regola!=null && regola.isEnabled()) {
  258.                 return regola;
  259.             }
  260.            
  261.             // poi solamente per nome soggetto per specifica fruizione/erogazione
  262.             regola = ForwardProxy.readConfigurazioneDominio(dominio.getNome(), fruizione, policy,
  263.                     defaultConfig, defaultConfigToken);
  264.             if(regola!=null && regola.isEnabled()) {
  265.                 return regola;
  266.             }
  267.             // poi solamente per nome soggetto che vale sia per la fruizione che per l'erogazione
  268.             regola = ForwardProxy.readConfigurazioneDominio(dominio.getNome(), null, policy,
  269.                     defaultConfig, defaultConfigToken);
  270.             if(regola!=null && regola.isEnabled()) {
  271.                 return regola;
  272.             }
  273.            
  274.            
  275.             // poi cerco per protocollo per specifica fruizione/erogazione
  276.             regola = ForwardProxy.readConfigurazioneProtocollo(dominio.getTipo(), fruizione, policy,
  277.                     defaultConfig, defaultConfigToken);
  278.             if(regola!=null && regola.isEnabled()) {
  279.                 return regola;
  280.             }
  281.             // poi cerco per protocollo che vale sia per la fruizione che per l'erogazione
  282.             regola = ForwardProxy.readConfigurazioneProtocollo(dominio.getTipo(), null, policy,
  283.                     defaultConfig, defaultConfigToken);
  284.             if(regola!=null && regola.isEnabled()) {
  285.                 return regola;
  286.             }
  287.            
  288.            
  289.             // poi cerco configurazione generica per specifica fruizione/erogazione
  290.             regola = ForwardProxy.readConfigurazione(fruizione, policy,
  291.                     defaultConfig, defaultConfigToken);
  292.             if(regola!=null && regola.isEnabled()) {
  293.                 return regola;
  294.             }
  295.             // altrimenti ritorno regola di default (eventualmente disabilitata per motivi di caching)
  296.             return ForwardProxy.readConfigurazione(null, policy,
  297.                     defaultConfig, defaultConfigToken);
  298.            
  299.         }catch(Exception e){
  300.             throw new DriverConfigurazioneException(e.getMessage(),e);
  301.         }
  302.        
  303.     }
  304.    
  305.    
  306.     private static ForwardProxyConfigurazione readForwardProxyConfigurazione(boolean byProtocollo, String tipoSoggetto, Boolean fruizione) throws ProtocolException {
  307.        
  308.         String systemPropertyProxyHeader = GOVWAY_PROXY_HEADER;
  309.         String systemPropertyProxyHeaderBase64 = GOVWAY_PROXY_HEADER_BASE64;
  310.         String systemPropertyProxyQuery = GOVWAY_PROXY_QUERY;
  311.         String systemPropertyProxyQueryBase64 = GOVWAY_PROXY_QUERY_BASE64;
  312.        
  313.         if(fruizione!=null) {
  314.             systemPropertyProxyHeader = fruizione ? GOVWAY_FRUIZIONI_PROXY_HEADER : GOVWAY_EROGAZIONI_PROXY_HEADER;
  315.             systemPropertyProxyHeaderBase64 = fruizione ? GOVWAY_FRUIZIONI_PROXY_HEADER_BASE64 : GOVWAY_EROGAZIONI_PROXY_HEADER_BASE64;
  316.             systemPropertyProxyQuery = fruizione ? GOVWAY_FRUIZIONI_PROXY_QUERY : GOVWAY_EROGAZIONI_PROXY_QUERY;
  317.             systemPropertyProxyQueryBase64 = fruizione ? GOVWAY_FRUIZIONI_PROXY_QUERY_BASE64 : GOVWAY_EROGAZIONI_PROXY_QUERY_BASE64;
  318.         }
  319.        
  320.         if(byProtocollo) {
  321.             String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  322.             systemPropertyProxyHeader= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  323.             systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  324.             systemPropertyProxyQuery= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  325.             systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  326.         }
  327.        
  328.         String header = System.getProperty(systemPropertyProxyHeader);
  329.         String query = System.getProperty(systemPropertyProxyQuery);
  330.            
  331.         if(
  332.                 (header==null || "".equals(header)) &&
  333.                 (query==null || "".equals(query))
  334.             ) {
  335.             // verrĂ  usata quella di default
  336.             return null;
  337.         }
  338.        
  339.         ForwardProxyConfigurazione config = new ForwardProxyConfigurazione();
  340.                
  341.         if(header!=null && !"".equals(header)) {
  342.             config.setHeader(header);
  343.            
  344.             String base64 = System.getProperty(systemPropertyProxyHeaderBase64);
  345.             if(base64!=null && !"".equals(base64)) {
  346.                 if(TRUE.equalsIgnoreCase(base64)) {
  347.                     config.setHeaderBase64(true);
  348.                 }
  349.                 else if(FALSE.equalsIgnoreCase(base64)) {
  350.                     config.setHeaderBase64(false);
  351.                 }
  352.                 else {
  353.                     config.setHeaderBase64(DEFAULT_GOVWAY_PROXY_HEADER_BASE64);
  354.                 }
  355.             }
  356.             else {
  357.                 config.setHeaderBase64(DEFAULT_GOVWAY_PROXY_HEADER_BASE64);
  358.             }
  359.         }
  360.        
  361.         if(query!=null && !"".equals(query)) {
  362.             config.setQuery(query);
  363.            
  364.             String base64 = System.getProperty(systemPropertyProxyQueryBase64);
  365.             if(base64!=null && !"".equals(base64)) {
  366.                 if(TRUE.equalsIgnoreCase(base64)) {
  367.                     config.setQueryBase64(true);
  368.                 }
  369.                 else if(FALSE.equalsIgnoreCase(base64)) {
  370.                     config.setQueryBase64(false);
  371.                 }
  372.                 else {
  373.                     config.setQueryBase64(DEFAULT_GOVWAY_PROXY_QUERY_BASE64);
  374.                 }
  375.             }
  376.             else {
  377.                 config.setQueryBase64(DEFAULT_GOVWAY_PROXY_QUERY_BASE64);
  378.             }
  379.         }
  380.        
  381.         return config;
  382.        
  383.     }
  384.    
  385.     private static ForwardProxyConfigurazioneToken readForwardProxyConfigurazioneToken(boolean byProtocollo, String tipoSoggetto, Boolean fruizione, IDGenericProperties policy) throws ProtocolException {
  386.        
  387.         String systemPropertyProxyTokenDynamicDiscovery = GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  388.         String systemPropertyProxyTokenValidazioneJwt = GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  389.         String systemPropertyProxyTokenIntrospection = GOVWAY_PROXY_TOKEN_INTROSPECTION;
  390.         String systemPropertyProxyTokenUserInfo = GOVWAY_PROXY_TOKEN_USERINFO;
  391.         String systemPropertyProxyTokenRetrieve = GOVWAY_PROXY_TOKEN_RETRIEVE;
  392.         String systemPropertyProxyAttributeAuthority = GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  393.         String systemPropertyProxyAttributeAuthorityResponseJwtValidation = GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  394.        
  395.         if(fruizione!=null) {
  396.             systemPropertyProxyTokenDynamicDiscovery = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY : GOVWAY_EROGAZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  397.             systemPropertyProxyTokenValidazioneJwt = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_VALIDAZIONE_JWT : GOVWAY_EROGAZIONI_PROXY_TOKEN_VALIDAZIONE_JWT;
  398.             systemPropertyProxyTokenIntrospection = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_INTROSPECTION : GOVWAY_EROGAZIONI_PROXY_TOKEN_INTROSPECTION;
  399.             systemPropertyProxyTokenUserInfo = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_USERINFO : GOVWAY_EROGAZIONI_PROXY_TOKEN_USERINFO;
  400.             systemPropertyProxyTokenRetrieve = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_RETRIEVE : GOVWAY_EROGAZIONI_PROXY_TOKEN_RETRIEVE;
  401.             systemPropertyProxyAttributeAuthority = fruizione ? GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY : GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY;
  402.             systemPropertyProxyAttributeAuthorityResponseJwtValidation = fruizione ? GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION : GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  403.         }
  404.        
  405.         if(byProtocollo) {
  406.             String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  407.             systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  408.             systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  409.             systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  410.             systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  411.             systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  412.             systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  413.             systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  414.         }
  415.        
  416.         if(policy!=null && policy.getNome()!=null) {
  417.             systemPropertyProxyTokenDynamicDiscovery+=GOVWAY_SEPARATORE+policy.getNome();
  418.             systemPropertyProxyTokenValidazioneJwt+=GOVWAY_SEPARATORE+policy.getNome();
  419.             systemPropertyProxyTokenIntrospection+=GOVWAY_SEPARATORE+policy.getNome();
  420.             systemPropertyProxyTokenUserInfo+=GOVWAY_SEPARATORE+policy.getNome();
  421.             systemPropertyProxyTokenRetrieve+=GOVWAY_SEPARATORE+policy.getNome();
  422.             systemPropertyProxyAttributeAuthority+=GOVWAY_SEPARATORE+policy.getNome();
  423.             systemPropertyProxyAttributeAuthorityResponseJwtValidation+=GOVWAY_SEPARATORE+policy.getNome();
  424.         }
  425.        
  426.         String dynamicDiscovery = System.getProperty(systemPropertyProxyTokenDynamicDiscovery);
  427.         String validazioneJwt = System.getProperty(systemPropertyProxyTokenValidazioneJwt);
  428.         String introspection = System.getProperty(systemPropertyProxyTokenIntrospection);
  429.         String userInfo = System.getProperty(systemPropertyProxyTokenUserInfo);
  430.         String retrieve = System.getProperty(systemPropertyProxyTokenRetrieve);
  431.         String attributeAuthority = System.getProperty(systemPropertyProxyAttributeAuthority);
  432.         String attributeAuthorityResponseJwtValidation = System.getProperty(systemPropertyProxyAttributeAuthorityResponseJwtValidation);
  433.            
  434.         if(
  435.                 (dynamicDiscovery==null || "".equals(dynamicDiscovery)) &&
  436.                 (validazioneJwt==null || "".equals(validazioneJwt)) &&
  437.                 (introspection==null || "".equals(introspection)) &&
  438.                 (userInfo==null || "".equals(userInfo)) &&
  439.                 (retrieve==null || "".equals(retrieve)) &&
  440.                 (attributeAuthority==null || "".equals(attributeAuthority)) &&
  441.                 (attributeAuthorityResponseJwtValidation==null || "".equals(attributeAuthorityResponseJwtValidation))
  442.             ) {
  443.             // verrĂ  usata quella di default
  444.             return null;
  445.         }
  446.        
  447.         ForwardProxyConfigurazioneToken config = new ForwardProxyConfigurazioneToken();
  448.            
  449.         if(dynamicDiscovery!=null && !"".equals(dynamicDiscovery)) {
  450.             if(TRUE.equalsIgnoreCase(dynamicDiscovery)) {
  451.                 config.tokenDynamicDiscoveryEnabled = true;
  452.             }
  453.             else if(FALSE.equalsIgnoreCase(dynamicDiscovery)) {
  454.                 config.tokenDynamicDiscoveryEnabled = false;
  455.             }
  456.             else {
  457.                 config.tokenDynamicDiscoveryEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  458.             }
  459.         }
  460.         else {
  461.             config.tokenDynamicDiscoveryEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  462.         }
  463.        
  464.         if(validazioneJwt!=null && !"".equals(validazioneJwt)) {
  465.             if(TRUE.equalsIgnoreCase(validazioneJwt)) {
  466.                 config.tokenJwtValidationEnabled = true;
  467.             }
  468.             else if(FALSE.equalsIgnoreCase(validazioneJwt)) {
  469.                 config.tokenJwtValidationEnabled = false;
  470.             }
  471.             else {
  472.                 config.tokenJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  473.             }
  474.         }
  475.         else {
  476.             config.tokenJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  477.         }
  478.        
  479.         if(introspection!=null && !"".equals(introspection)) {
  480.             if(TRUE.equalsIgnoreCase(introspection)) {
  481.                 config.tokenIntrospectionEnabled = true;
  482.             }
  483.             else if(FALSE.equalsIgnoreCase(introspection)) {
  484.                 config.tokenIntrospectionEnabled = false;
  485.             }
  486.             else {
  487.                 config.tokenIntrospectionEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_INTROSPECTION;
  488.             }
  489.         }
  490.         else {
  491.             config.tokenIntrospectionEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_INTROSPECTION;
  492.         }
  493.                
  494.         if(userInfo!=null && !"".equals(userInfo)) {
  495.             if(TRUE.equalsIgnoreCase(userInfo)) {
  496.                 config.tokenUserInfoEnabled = true;
  497.             }
  498.             else if(FALSE.equalsIgnoreCase(userInfo)) {
  499.                 config.tokenUserInfoEnabled = false;
  500.             }
  501.             else {
  502.                 config.tokenUserInfoEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_USERINFO;
  503.             }
  504.         }
  505.         else {
  506.             config.tokenUserInfoEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_USERINFO;
  507.         }
  508.        
  509.         if(retrieve!=null && !"".equals(retrieve)) {
  510.             if(TRUE.equalsIgnoreCase(retrieve)) {
  511.                 config.tokenRetrieveEnabled = true;
  512.             }
  513.             else if(FALSE.equalsIgnoreCase(retrieve)) {
  514.                 config.tokenRetrieveEnabled = false;
  515.             }
  516.             else {
  517.                 config.tokenRetrieveEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_RETRIEVE;
  518.             }
  519.         }
  520.         else {
  521.             config.tokenRetrieveEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_RETRIEVE;
  522.         }
  523.        
  524.         if(attributeAuthority!=null && !"".equals(attributeAuthority)) {
  525.             if(TRUE.equalsIgnoreCase(attributeAuthority)) {
  526.                 config.attributeAuthorityEnabled = true;
  527.             }
  528.             else if(FALSE.equalsIgnoreCase(attributeAuthority)) {
  529.                 config.attributeAuthorityEnabled = false;
  530.             }
  531.             else {
  532.                 config.attributeAuthorityEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  533.             }
  534.         }
  535.         else {
  536.             config.attributeAuthorityEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  537.         }
  538.        
  539.         if(attributeAuthorityResponseJwtValidation!=null && !"".equals(attributeAuthorityResponseJwtValidation)) {
  540.             if(TRUE.equalsIgnoreCase(attributeAuthorityResponseJwtValidation)) {
  541.                 config.attributeAuthorityResponseJwtValidationEnabled = true;
  542.             }
  543.             else if(FALSE.equalsIgnoreCase(attributeAuthorityResponseJwtValidation)) {
  544.                 config.attributeAuthorityResponseJwtValidationEnabled = false;
  545.             }
  546.             else {
  547.                 config.attributeAuthorityResponseJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  548.             }
  549.         }
  550.         else {
  551.             config.attributeAuthorityResponseJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  552.         }
  553.        
  554.         return config;
  555.        
  556.     }
  557.    
  558.     private static ForwardProxy readForwardProxyTag(String tag, Boolean fruizione, IDGenericProperties policy,
  559.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  560.         return readForwardProxy(tag, false, null, null, fruizione, policy,
  561.                 defaultConfig, defaultConfigToken);
  562.     }
  563.     private static ForwardProxy readConfigurazioneDominioByTipo(String tipoSoggetto, String nomeSoggetto, Boolean fruizione, IDGenericProperties policy,
  564.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  565.         return readForwardProxy(null, false, tipoSoggetto, nomeSoggetto, fruizione, policy,
  566.                 defaultConfig, defaultConfigToken);
  567.     }
  568.     private static ForwardProxy readConfigurazioneDominioByProtocollo(String tipoSoggetto, String nomeSoggetto, Boolean fruizione, IDGenericProperties policy,
  569.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  570.         return readForwardProxy(null, true, tipoSoggetto, nomeSoggetto, fruizione, policy,
  571.                 defaultConfig, defaultConfigToken);
  572.     }
  573.     private static ForwardProxy readConfigurazioneDominio(String nomeSoggetto, Boolean fruizione, IDGenericProperties policy,
  574.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  575.         return readForwardProxy(null, false, null, nomeSoggetto, fruizione, policy,
  576.                 defaultConfig, defaultConfigToken);
  577.     }
  578.     private static ForwardProxy readConfigurazioneProtocollo(String tipoSoggetto, Boolean fruizione, IDGenericProperties policy,
  579.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  580.         return readForwardProxy(null, true, tipoSoggetto, null, fruizione, policy,
  581.                 defaultConfig, defaultConfigToken);
  582.     }
  583.     private static ForwardProxy readConfigurazione(Boolean fruizione, IDGenericProperties policy,
  584.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  585.         return readForwardProxy(null, false, null, null, fruizione, policy,
  586.                 defaultConfig, defaultConfigToken);
  587.     }
  588.     private static ForwardProxy readForwardProxy(String tag, boolean byProtocollo, String tipoSoggetto, String nomeSoggetto, Boolean fruizione, IDGenericProperties policy,
  589.             ForwardProxyConfigurazione defaultConfig, ForwardProxyConfigurazioneToken defaultConfigToken) throws ProtocolException {
  590.        
  591.         String systemPropertyProxy = GOVWAY_PROXY;
  592.         String systemPropertyProxyHeader = GOVWAY_PROXY_HEADER;
  593.         String systemPropertyProxyHeaderBase64 = GOVWAY_PROXY_HEADER_BASE64;
  594.         String systemPropertyProxyQuery = GOVWAY_PROXY_QUERY;
  595.         String systemPropertyProxyQueryBase64 = GOVWAY_PROXY_QUERY_BASE64;
  596.        
  597.         if(fruizione!=null) {
  598.             systemPropertyProxy = fruizione ? GOVWAY_FRUIZIONI_PROXY : GOVWAY_EROGAZIONI_PROXY;
  599.             systemPropertyProxyHeader = fruizione ? GOVWAY_FRUIZIONI_PROXY_HEADER : GOVWAY_EROGAZIONI_PROXY_HEADER;
  600.             systemPropertyProxyHeaderBase64 = fruizione ? GOVWAY_FRUIZIONI_PROXY_HEADER_BASE64 : GOVWAY_EROGAZIONI_PROXY_HEADER_BASE64;
  601.             systemPropertyProxyQuery = fruizione ? GOVWAY_FRUIZIONI_PROXY_QUERY : GOVWAY_EROGAZIONI_PROXY_QUERY;
  602.             systemPropertyProxyQueryBase64 = fruizione ? GOVWAY_FRUIZIONI_PROXY_QUERY_BASE64 : GOVWAY_EROGAZIONI_PROXY_QUERY_BASE64;
  603.         }
  604.        
  605.         if(tag!=null) {
  606.             systemPropertyProxy= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxy;
  607.             systemPropertyProxyHeader= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  608.             systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  609.             systemPropertyProxyQuery= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  610.             systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  611.         }
  612.         else if(nomeSoggetto!=null) {
  613.             if(tipoSoggetto==null) {
  614.                 systemPropertyProxy= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxy;
  615.                 systemPropertyProxyHeader= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  616.                 systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  617.                 systemPropertyProxyQuery= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  618.                 systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  619.             }
  620.             else {
  621.                 if(byProtocollo) {
  622.                     String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  623.                     systemPropertyProxy= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxy;
  624.                     systemPropertyProxyHeader= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  625.                     systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  626.                     systemPropertyProxyQuery= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  627.                     systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  628.                 }
  629.                 else {
  630.                     systemPropertyProxy= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxy;
  631.                     systemPropertyProxyHeader= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  632.                     systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  633.                     systemPropertyProxyQuery= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  634.                     systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  635.                 }
  636.             }
  637.         }
  638.         else if(byProtocollo) {
  639.             String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  640.             systemPropertyProxy= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxy;
  641.             systemPropertyProxyHeader= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyHeader;
  642.             systemPropertyProxyHeaderBase64= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyHeaderBase64;
  643.             systemPropertyProxyQuery= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyQuery;
  644.             systemPropertyProxyQueryBase64= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyQueryBase64;
  645.         }
  646.        
  647.        
  648.        
  649.         String systemPropertyProxyTokenDynamicDiscovery = GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  650.         String systemPropertyProxyTokenValidazioneJwt = GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  651.         String systemPropertyProxyTokenIntrospection = GOVWAY_PROXY_TOKEN_INTROSPECTION;
  652.         String systemPropertyProxyTokenUserInfo = GOVWAY_PROXY_TOKEN_USERINFO;
  653.         String systemPropertyProxyTokenRetrieve = GOVWAY_PROXY_TOKEN_RETRIEVE;
  654.         String systemPropertyProxyAttributeAuthority = GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  655.         String systemPropertyProxyAttributeAuthorityResponseJwtValidation = GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  656.        
  657.         if(fruizione!=null) {
  658.             systemPropertyProxyTokenDynamicDiscovery = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY : GOVWAY_EROGAZIONI_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  659.             systemPropertyProxyTokenValidazioneJwt = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_VALIDAZIONE_JWT : GOVWAY_EROGAZIONI_PROXY_TOKEN_VALIDAZIONE_JWT;
  660.             systemPropertyProxyTokenIntrospection = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_INTROSPECTION : GOVWAY_EROGAZIONI_PROXY_TOKEN_INTROSPECTION;
  661.             systemPropertyProxyTokenUserInfo = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_USERINFO : GOVWAY_EROGAZIONI_PROXY_TOKEN_USERINFO;
  662.             systemPropertyProxyTokenRetrieve = fruizione ? GOVWAY_FRUIZIONI_PROXY_TOKEN_RETRIEVE : GOVWAY_EROGAZIONI_PROXY_TOKEN_RETRIEVE;
  663.             systemPropertyProxyAttributeAuthority = fruizione ? GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY : GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY;
  664.             systemPropertyProxyAttributeAuthorityResponseJwtValidation = fruizione ? GOVWAY_FRUIZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION : GOVWAY_EROGAZIONI_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  665.         }
  666.        
  667.         if(tag!=null) {
  668.             systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  669.             systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  670.             systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  671.             systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  672.             systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  673.             systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  674.             systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_TAG_PROXY+ tag +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  675.         }
  676.         else if(nomeSoggetto!=null) {
  677.             if(tipoSoggetto==null) {
  678.                 systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  679.                 systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  680.                 systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  681.                 systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  682.                 systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  683.                 systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  684.                 systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_DOMINIO_PROXY + nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  685.             }
  686.             else {
  687.                 if(byProtocollo) {
  688.                     String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  689.                     systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  690.                     systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  691.                     systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  692.                     systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  693.                     systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  694.                     systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  695.                     systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_DOMINIO_PROXY + protocollo+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  696.                 }
  697.                 else {
  698.                     systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  699.                     systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  700.                     systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  701.                     systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  702.                     systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  703.                     systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  704.                     systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_DOMINIO_PROXY + tipoSoggetto+GOVWAY_SEPARATORE+nomeSoggetto +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  705.                 }
  706.             }
  707.         }
  708.         else if(byProtocollo) {
  709.             String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipoSoggetto);
  710.             systemPropertyProxyTokenDynamicDiscovery= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenDynamicDiscovery;
  711.             systemPropertyProxyTokenValidazioneJwt= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenValidazioneJwt;
  712.             systemPropertyProxyTokenIntrospection= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenIntrospection;
  713.             systemPropertyProxyTokenUserInfo= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenUserInfo;
  714.             systemPropertyProxyTokenRetrieve= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyTokenRetrieve;
  715.             systemPropertyProxyAttributeAuthority= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthority;
  716.             systemPropertyProxyAttributeAuthorityResponseJwtValidation= GOVWAY_PREFISSO_PROTOCOLLO_PROXY+ protocollo +GOVWAY_SEPARATORE+ systemPropertyProxyAttributeAuthorityResponseJwtValidation;
  717.         }
  718.        
  719.        
  720.         String systemPropertyProxyTokenDynamicDiscoveryNomePolicy = null;
  721.         String systemPropertyProxyTokenValidazioneJwtNomePolicy = null;
  722.         String systemPropertyProxyTokenIntrospectionNomePolicy = null;
  723.         String systemPropertyProxyTokenUserInfoNomePolicy = null;
  724.         String systemPropertyProxyTokenRetrieveNomePolicy = null;
  725.         String systemPropertyProxyAttributeAuthorityNomePolicy = null;
  726.         String systemPropertyProxyAttributeAuthorityResponseJwtValidationNomePolicy = null;
  727.        
  728.         if(policy!=null && policy.getNome()!=null) {
  729.             systemPropertyProxyTokenDynamicDiscoveryNomePolicy = systemPropertyProxyTokenDynamicDiscovery+GOVWAY_SEPARATORE+policy.getNome();
  730.             systemPropertyProxyTokenValidazioneJwtNomePolicy = systemPropertyProxyTokenValidazioneJwt+GOVWAY_SEPARATORE+policy.getNome();
  731.             systemPropertyProxyTokenIntrospectionNomePolicy = systemPropertyProxyTokenIntrospection+GOVWAY_SEPARATORE+policy.getNome();
  732.             systemPropertyProxyTokenUserInfoNomePolicy = systemPropertyProxyTokenUserInfo+GOVWAY_SEPARATORE+policy.getNome();
  733.             systemPropertyProxyTokenRetrieveNomePolicy = systemPropertyProxyTokenRetrieve+GOVWAY_SEPARATORE+policy.getNome();
  734.             systemPropertyProxyAttributeAuthorityNomePolicy = systemPropertyProxyAttributeAuthority+GOVWAY_SEPARATORE+policy.getNome();
  735.             systemPropertyProxyAttributeAuthorityResponseJwtValidationNomePolicy = systemPropertyProxyAttributeAuthorityResponseJwtValidation+GOVWAY_SEPARATORE+policy.getNome();
  736.         }
  737.        
  738.        
  739.        
  740.        
  741.         ForwardProxy sConfig = new ForwardProxy();
  742.        
  743.         String url = System.getProperty(systemPropertyProxy);
  744.         if(url!=null && !"".equals(url)) {
  745.             sConfig.enabled=true;
  746.             sConfig.url = url;
  747.            
  748.            
  749.             // gestione header/query
  750.            
  751.             String header = System.getProperty(systemPropertyProxyHeader);
  752.             String query = System.getProperty(systemPropertyProxyQuery);
  753.            
  754.             if(
  755.                 (header==null || "".equals(header)) &&
  756.                 (query==null || "".equals(query))
  757.             ) {
  758.                 // verrĂ  usata quella di default
  759.                 sConfig.config = defaultConfig;
  760.             }
  761.             else {
  762.                
  763.                 ForwardProxyConfigurazione config = new ForwardProxyConfigurazione();
  764.                 sConfig.config = config;
  765.                
  766.                 if(header!=null && !"".equals(header)) {
  767.                     config.setHeader(header);
  768.                    
  769.                     String base64 = System.getProperty(systemPropertyProxyHeaderBase64);
  770.                     if(base64!=null && !"".equals(base64)) {
  771.                         if(TRUE.equalsIgnoreCase(base64)) {
  772.                             config.setHeaderBase64(true);
  773.                         }
  774.                         else if(FALSE.equalsIgnoreCase(base64)) {
  775.                             config.setHeaderBase64(false);
  776.                         }
  777.                         else {
  778.                             config.setHeaderBase64(DEFAULT_GOVWAY_PROXY_HEADER_BASE64);
  779.                         }
  780.                     }
  781.                     else {
  782.                         config.setHeaderBase64(DEFAULT_GOVWAY_PROXY_HEADER_BASE64);
  783.                     }
  784.                 }
  785.                
  786.                 if(query!=null && !"".equals(query)) {
  787.                     config.setQuery(query);
  788.                    
  789.                     String base64 = System.getProperty(systemPropertyProxyQueryBase64);
  790.                     if(base64!=null && !"".equals(base64)) {
  791.                         if(TRUE.equalsIgnoreCase(base64)) {
  792.                             config.setQueryBase64(true);
  793.                         }
  794.                         else if(FALSE.equalsIgnoreCase(base64)) {
  795.                             config.setQueryBase64(false);
  796.                         }
  797.                         else {
  798.                             config.setQueryBase64(DEFAULT_GOVWAY_PROXY_QUERY_BASE64);
  799.                         }
  800.                     }
  801.                     else {
  802.                         config.setQueryBase64(DEFAULT_GOVWAY_PROXY_QUERY_BASE64);
  803.                     }
  804.                 }
  805.                
  806.             }
  807.            
  808.            
  809.             // gestione token
  810.            
  811.             String dynamicDiscovery = null;
  812.             if(systemPropertyProxyTokenDynamicDiscoveryNomePolicy!=null) {
  813.                 dynamicDiscovery = System.getProperty(systemPropertyProxyTokenDynamicDiscoveryNomePolicy);
  814.             }
  815.             if((dynamicDiscovery==null || "".equals(dynamicDiscovery))) {
  816.                 dynamicDiscovery = System.getProperty(systemPropertyProxyTokenDynamicDiscovery);
  817.             }
  818.            
  819.             String validazioneJwt = null;
  820.             if(systemPropertyProxyTokenValidazioneJwtNomePolicy!=null) {
  821.                 validazioneJwt = System.getProperty(systemPropertyProxyTokenValidazioneJwtNomePolicy);
  822.             }
  823.             if((validazioneJwt==null || "".equals(validazioneJwt))) {
  824.                 validazioneJwt = System.getProperty(systemPropertyProxyTokenValidazioneJwt);
  825.             }
  826.            
  827.             String introspection = null;
  828.             if(systemPropertyProxyTokenIntrospectionNomePolicy!=null) {
  829.                 introspection = System.getProperty(systemPropertyProxyTokenIntrospectionNomePolicy);
  830.             }
  831.             if((introspection==null || "".equals(introspection))) {
  832.                 introspection = System.getProperty(systemPropertyProxyTokenIntrospection);
  833.             }
  834.            
  835.             String userInfo = null;
  836.             if(systemPropertyProxyTokenUserInfoNomePolicy!=null) {
  837.                 userInfo = System.getProperty(systemPropertyProxyTokenUserInfoNomePolicy);
  838.             }
  839.             if((userInfo==null || "".equals(userInfo))) {
  840.                 userInfo = System.getProperty(systemPropertyProxyTokenUserInfo);
  841.             }
  842.            
  843.             String retrieve = null;
  844.             if(systemPropertyProxyTokenRetrieveNomePolicy!=null) {
  845.                 retrieve = System.getProperty(systemPropertyProxyTokenRetrieveNomePolicy);
  846.             }
  847.             if((retrieve==null || "".equals(retrieve))) {
  848.                 retrieve = System.getProperty(systemPropertyProxyTokenRetrieve);
  849.             }
  850.            
  851.             String attributeAuthority = null;
  852.             if(systemPropertyProxyAttributeAuthorityNomePolicy!=null) {
  853.                 attributeAuthority = System.getProperty(systemPropertyProxyAttributeAuthorityNomePolicy);
  854.             }
  855.             if((attributeAuthority==null || "".equals(attributeAuthority))) {
  856.                 attributeAuthority = System.getProperty(systemPropertyProxyAttributeAuthority);
  857.             }
  858.            
  859.             String attributeAuthorityResponseJwtValidation = null;
  860.             if(systemPropertyProxyAttributeAuthorityResponseJwtValidationNomePolicy!=null) {
  861.                 attributeAuthorityResponseJwtValidation = System.getProperty(systemPropertyProxyAttributeAuthorityResponseJwtValidationNomePolicy);
  862.             }
  863.             if((attributeAuthorityResponseJwtValidation==null || "".equals(attributeAuthorityResponseJwtValidation))) {
  864.                 attributeAuthorityResponseJwtValidation = System.getProperty(systemPropertyProxyAttributeAuthorityResponseJwtValidation);
  865.             }
  866.                        
  867.             if(
  868.                     (dynamicDiscovery==null || "".equals(dynamicDiscovery)) &&
  869.                     (validazioneJwt==null || "".equals(validazioneJwt)) &&
  870.                     (introspection==null || "".equals(introspection)) &&
  871.                     (userInfo==null || "".equals(userInfo)) &&
  872.                     (retrieve==null || "".equals(retrieve)) &&
  873.                     (attributeAuthority==null || "".equals(attributeAuthority))  &&
  874.                     (attributeAuthorityResponseJwtValidation==null || "".equals(attributeAuthorityResponseJwtValidation))
  875.                 ) {
  876.                 // verrĂ  usata quella di default
  877.                 sConfig.configToken = defaultConfigToken;
  878.             }
  879.             else{
  880.            
  881.                 ForwardProxyConfigurazioneToken config = new ForwardProxyConfigurazioneToken();
  882.                 sConfig.configToken = config;
  883.                        
  884.                 if(dynamicDiscovery!=null && !"".equals(dynamicDiscovery)) {
  885.                     if(TRUE.equalsIgnoreCase(dynamicDiscovery)) {
  886.                         config.tokenDynamicDiscoveryEnabled = true;
  887.                     }
  888.                     else if(FALSE.equalsIgnoreCase(dynamicDiscovery)) {
  889.                         config.tokenDynamicDiscoveryEnabled = false;
  890.                     }
  891.                     else {
  892.                         config.tokenDynamicDiscoveryEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  893.                     }
  894.                 }
  895.                 else {
  896.                     config.tokenDynamicDiscoveryEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_DYNAMIC_DISCOVERY;
  897.                 }
  898.                
  899.                 if(validazioneJwt!=null && !"".equals(validazioneJwt)) {
  900.                     if(TRUE.equalsIgnoreCase(validazioneJwt)) {
  901.                         config.tokenJwtValidationEnabled = true;
  902.                     }
  903.                     else if(FALSE.equalsIgnoreCase(validazioneJwt)) {
  904.                         config.tokenJwtValidationEnabled = false;
  905.                     }
  906.                     else {
  907.                         config.tokenJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  908.                     }
  909.                 }
  910.                 else {
  911.                     config.tokenJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_VALIDAZIONE_JWT;
  912.                 }
  913.                
  914.                 if(introspection!=null && !"".equals(introspection)) {
  915.                     if(TRUE.equalsIgnoreCase(introspection)) {
  916.                         config.tokenIntrospectionEnabled = true;
  917.                     }
  918.                     else if(FALSE.equalsIgnoreCase(introspection)) {
  919.                         config.tokenIntrospectionEnabled = false;
  920.                     }
  921.                     else {
  922.                         config.tokenIntrospectionEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_INTROSPECTION;
  923.                     }
  924.                 }
  925.                 else {
  926.                     config.tokenIntrospectionEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_INTROSPECTION;
  927.                 }
  928.                        
  929.                 if(userInfo!=null && !"".equals(userInfo)) {
  930.                     if(TRUE.equalsIgnoreCase(userInfo)) {
  931.                         config.tokenUserInfoEnabled = true;
  932.                     }
  933.                     else if(FALSE.equalsIgnoreCase(userInfo)) {
  934.                         config.tokenUserInfoEnabled = false;
  935.                     }
  936.                     else {
  937.                         config.tokenUserInfoEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_USERINFO;
  938.                     }
  939.                 }
  940.                 else {
  941.                     config.tokenUserInfoEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_USERINFO;
  942.                 }
  943.                
  944.                 if(retrieve!=null && !"".equals(retrieve)) {
  945.                     if(TRUE.equalsIgnoreCase(retrieve)) {
  946.                         config.tokenRetrieveEnabled = true;
  947.                     }
  948.                     else if(FALSE.equalsIgnoreCase(retrieve)) {
  949.                         config.tokenRetrieveEnabled = false;
  950.                     }
  951.                     else {
  952.                         config.tokenRetrieveEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_RETRIEVE;
  953.                     }
  954.                 }
  955.                 else {
  956.                     config.tokenRetrieveEnabled = DEFAULT_GOVWAY_PROXY_TOKEN_RETRIEVE;
  957.                 }
  958.                
  959.                 if(attributeAuthority!=null && !"".equals(attributeAuthority)) {
  960.                     if(TRUE.equalsIgnoreCase(attributeAuthority)) {
  961.                         config.attributeAuthorityEnabled = true;
  962.                     }
  963.                     else if(FALSE.equalsIgnoreCase(attributeAuthority)) {
  964.                         config.attributeAuthorityEnabled = false;
  965.                     }
  966.                     else {
  967.                         config.attributeAuthorityEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  968.                     }
  969.                 }
  970.                 else {
  971.                     config.attributeAuthorityEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY;
  972.                 }
  973.                
  974.                 if(attributeAuthorityResponseJwtValidation!=null && !"".equals(attributeAuthorityResponseJwtValidation)) {
  975.                     if(TRUE.equalsIgnoreCase(attributeAuthorityResponseJwtValidation)) {
  976.                         config.attributeAuthorityResponseJwtValidationEnabled = true;
  977.                     }
  978.                     else if(FALSE.equalsIgnoreCase(attributeAuthorityResponseJwtValidation)) {
  979.                         config.attributeAuthorityResponseJwtValidationEnabled = false;
  980.                     }
  981.                     else {
  982.                         config.attributeAuthorityResponseJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  983.                     }
  984.                 }
  985.                 else {
  986.                     config.attributeAuthorityResponseJwtValidationEnabled = DEFAULT_GOVWAY_PROXY_ATTRIBUTE_AUTHORITY_RESPONSE_JWT_VALIDATION;
  987.                 }
  988.             }
  989.         }
  990.        
  991.         return sConfig;
  992.        
  993.     }
  994.    
  995.     @Override
  996.     public String toString(){
  997.         StringBuilder sb = new StringBuilder();
  998.         sb.append("enabled: ").append(this.enabled);
  999.         if(this.enabled) {
  1000.             sb.append("\n").append("url: ").append(this.url);
  1001.         }
  1002.         if(this.config!=null) {
  1003.             sb.append("\n").append(this.config.toString());
  1004.         }
  1005.         if(this.configToken!=null) {
  1006.             sb.append("\n").append(this.configToken.toString());
  1007.         }
  1008.         return sb.toString();
  1009.     }
  1010.        
  1011.    
  1012.     private boolean enabled = false;
  1013.     private String url;
  1014.     private ForwardProxyConfigurazione config;
  1015.     private ForwardProxyConfigurazioneToken configToken;
  1016.    
  1017.     public ForwardProxy() {
  1018.         // nop
  1019.     }
  1020.    
  1021.     public boolean isEnabled() {
  1022.         return this.enabled;
  1023.     }

  1024.     public void setEnabled(boolean enabled) {
  1025.         this.enabled = enabled;
  1026.     }

  1027.     public String getUrl() {
  1028.         return this.url;
  1029.     }

  1030.     public void setUrl(String url) {
  1031.         this.url = url;
  1032.     }

  1033.     public ForwardProxyConfigurazione getConfig() {
  1034.         return this.config;
  1035.     }

  1036.     public void setConfig(ForwardProxyConfigurazione config) {
  1037.         this.config = config;
  1038.     }
  1039.    
  1040.     public ForwardProxyConfigurazioneToken getConfigToken() {
  1041.         return this.configToken;
  1042.     }

  1043.     public void setConfigToken(ForwardProxyConfigurazioneToken configToken) {
  1044.         this.configToken = configToken;
  1045.     }

  1046.    
  1047. }