ReadTimeoutConfigurationUtils.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.core.controllo_traffico;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.openspcoop2.core.config.PortaApplicativa;
  24. import org.openspcoop2.core.config.PortaDelegata;
  25. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  26. import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy;
  27. import org.openspcoop2.core.id.IDException;
  28. import org.openspcoop2.core.id.IDServizio;
  29. import org.openspcoop2.core.id.IDSoggetto;
  30. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  31. import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
  32. import org.openspcoop2.pdd.core.connettori.ConnettoreUtils;
  33. import org.openspcoop2.pdd.core.controllo_traffico.policy.PolicyDati;
  34. import org.openspcoop2.pdd.core.controllo_traffico.policy.PolicyVerifier;
  35. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  36. import org.openspcoop2.protocol.sdk.ProtocolException;

  37. /**    
  38.  * ReadTimeoutConfigurationUtils
  39.  *
  40.  * @author Poli Andrea (poli@link.it)
  41.  * @author $Author$
  42.  * @version $Rev$, $Date$
  43.  */
  44. public class ReadTimeoutConfigurationUtils {
  45.    
  46.     private ReadTimeoutConfigurationUtils() {}

  47.     public static final String CONFIG_GLOBALE_PROPERTY = "Configurazione globale: ";
  48.     public static final String CONFIG_TIMEOUT = "Timeout (ms): ";
  49.     public static final String CONFIG_PROFILO = "Profilo: ";
  50.     public static final String CONFIG_TIPOLOGIA = "Tipologia: ";
  51.     public static final String CONFIG_TIPOLOGIA_VALUE_DELEGATA = "fruizione";
  52.     public static final String CONFIG_TIPOLOGIA_VALUE_APPLICATIVA = "erogazione";
  53.     public static final String CONFIG_FRUITORE = "Fruitore: ";
  54.     public static final String CONFIG_EROGATORE = "Erogatore: ";
  55.     public static final String CONFIG_SERVIZIO = "Servizio: ";
  56.     public static final String CONFIG_GRUPPO = "Gruppo: ";
  57.     public static final String CONFIG_CONNETTORE = "Connettore: ";
  58.     public static final String CONFIG_POLICY_NEGOZIAZIONE = "Token Policy Negoziazione: ";
  59.     public static final String CONFIG_POLICY_VALIDAZIONE_DYNAMIC_DISCOVERY = "Token Policy Dynamic Discovery: ";
  60.     public static final String CONFIG_POLICY_VALIDAZIONE_JWT = "Token Policy Validazione JWT: ";
  61.     public static final String CONFIG_POLICY_VALIDAZIONE_INTROSPECTION = "Token Policy Introspection: ";
  62.     public static final String CONFIG_POLICY_VALIDAZIONE_USER_INFO = "Token Policy UserInfo: ";
  63.     public static final String CONFIG_ATTRIBUTE_AUTHORITY = "Attribute Authority: ";
  64.     public static final String CONFIG_ATTRIBUTE_AUTHORITY_VALIDAZIONE_RISPOSTA_JWT = "Attribute Authority - Risposta JWT: ";
  65.     public static final String CONFIG_NOME_PORTA_INBOUND_PROPERTY = "Porta Inbound: ";
  66.     public static final String CONFIG_NOME_PORTA_OUTBOUND_PROPERTY = "Porta Outbound: ";
  67.     public static final String CONFIG_NOME_PORTA_PROPERTY = "Porta: ";

  68.     public static final String ID_POLICY_NEGOZIAZIONE = "tokenRetrieve:";
  69.     public static final String ID_POLICY_VALIDAZIONE_DYNAMIC_DISCOVERY = "tokenDynamicDiscovery:";
  70.     public static final String ID_POLICY_VALIDAZIONE_JWT = "tokenJwtValidation:";
  71.     public static final String ID_POLICY_VALIDAZIONE_INTROSPECTION = "tokenIntrospection:";
  72.     public static final String ID_POLICY_VALIDAZIONE_USER_INFO = "tokenUserInfo:";
  73.     public static final String ID_ATTRIBUTE_AUTHORITY = "attributeAuthority:";
  74.     public static final String ID_ATTRIBUTE_AUTHORITY_VALIDAZIONE_RISPOSTA_JWT = "attributeAuthorityResponseJwtValidation:";
  75.    
  76.     public static PolicyDati convertToPolicyDati(String configurazione) throws IDException {
  77.         PolicyDati dati = new PolicyDati();
  78.         String [] tmp = configurazione.split("\n");
  79.         if(tmp!=null && tmp.length>0) {
  80.             dati.setProfilo(parse(tmp, CONFIG_PROFILO));
  81.             dati.setRuoloPorta(parseRuoloPolicy(tmp, CONFIG_TIPOLOGIA));
  82.             dati.setIdFruitore(parseIdSoggetto(tmp, CONFIG_FRUITORE));
  83.             dati.setIdServizio(parseIDServizio(tmp));
  84.             IDSoggetto erogatore = parseIdSoggetto(tmp, CONFIG_EROGATORE);
  85.             if(erogatore!=null) {
  86.                 if(dati.getIdServizio()!=null) {
  87.                     dati.setIdServizio(IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(
  88.                             dati.getIdServizio().getTipo(),
  89.                             dati.getIdServizio().getNome(),
  90.                             erogatore.getTipo(),
  91.                             erogatore.getNome(),
  92.                             dati.getIdServizio().getVersione()));
  93.                 }
  94.                 else {
  95.                     dati.setIdServizio(IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(
  96.                             null,
  97.                             null,
  98.                             erogatore.getTipo(),
  99.                             erogatore.getNome(),
  100.                             -1));
  101.                 }
  102.             }
  103.             dati.setGruppo(parse(tmp, CONFIG_GRUPPO));
  104.             dati.setConnettore(parse(tmp, CONFIG_CONNETTORE));
  105.            
  106.             dati.setTokenPolicyNegoziazione(parse(tmp, CONFIG_POLICY_NEGOZIAZIONE));
  107.            
  108.             dati.setTokenPolicyValidazioneDynamicDiscovery(parse(tmp, CONFIG_POLICY_VALIDAZIONE_DYNAMIC_DISCOVERY));
  109.             dati.setTokenPolicyValidazioneJwt(parse(tmp, CONFIG_POLICY_VALIDAZIONE_JWT));
  110.             dati.setTokenPolicyValidazioneIntrospection(parse(tmp, CONFIG_POLICY_VALIDAZIONE_INTROSPECTION));
  111.             dati.setTokenPolicyValidazioneUserInfo(parse(tmp, CONFIG_POLICY_VALIDAZIONE_USER_INFO));
  112.            
  113.             dati.setAttributeAuthority(parse(tmp, CONFIG_ATTRIBUTE_AUTHORITY));
  114.             dati.setAttributeAuthorityResponseJwt(parse(tmp, CONFIG_ATTRIBUTE_AUTHORITY_VALIDAZIONE_RISPOSTA_JWT));
  115.            
  116.             dati.setNomePorta(parse(tmp, CONFIG_NOME_PORTA_INBOUND_PROPERTY));
  117.             if(dati.getNomePorta()==null) {
  118.                 dati.setNomePorta(parse(tmp, CONFIG_NOME_PORTA_OUTBOUND_PROPERTY));
  119.             }
  120.             if(dati.getNomePorta()==null) {
  121.                 dati.setNomePorta(parse(tmp, CONFIG_NOME_PORTA_PROPERTY));
  122.             }
  123.         }
  124.         return dati;
  125.     }
  126.     private static String parse(String [] tmp, String prefix) {
  127.         for (String s : tmp) {
  128.             if(s!=null) {
  129.                 s = s.trim();
  130.                 if(s.startsWith(prefix) && s.length()>prefix.length()) {
  131.                     return s.substring(prefix.length(),s.length());
  132.                 }
  133.             }
  134.         }
  135.         return null;
  136.     }
  137.     private static RuoloPolicy parseRuoloPolicy(String [] tmp, String prefix) {
  138.         String v = parse(tmp, prefix);
  139.         if(CONFIG_TIPOLOGIA_VALUE_APPLICATIVA.equals(v)) {
  140.             return RuoloPolicy.APPLICATIVA;
  141.         }
  142.         else if(CONFIG_TIPOLOGIA_VALUE_DELEGATA.equals(v)) {
  143.             return RuoloPolicy.DELEGATA;
  144.         }
  145.         return null;
  146.     }
  147.     private static IDSoggetto parseIdSoggetto(String [] tmp, String prefix) throws IDException {
  148.         String v = parse(tmp, prefix);
  149.         if(v!=null) {
  150.             return IDSoggetto.toIDSoggetto(v);
  151.         }
  152.         return null;
  153.     }
  154.     private static IDServizio parseIDServizio(String [] tmp) throws IDException {
  155.         String v = parse(tmp, CONFIG_SERVIZIO);
  156.         if(v!=null) {
  157.             return parseIDServizio(v);
  158.         }
  159.         return null;
  160.     }
  161.     private static IDServizio parseIDServizio(String formatString) throws IDException {
  162.         String [] tmp = formatString.split("/");
  163.         if(tmp.length!=3) {
  164.             throw new IDException("Formato '"+formatString+"' non supportato, attesi 3 valori, trovati "+tmp.length);
  165.         }
  166.         String tipo = tmp[0];
  167.         String nome = tmp[1];
  168.         String versioneS = tmp[2];
  169.         int versione = Integer.parseInt(versioneS);
  170.         return IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(tipo, nome, null, null, versione);
  171.     }
  172.    
  173.     public static List<String> buildConfigurazioneEventoAsList(PolicyDati dati, Integer sogliaMs, Boolean globale) {
  174.         List<String> l = new ArrayList<>();
  175.         if(globale!=null) {
  176.             /** l.add(PolicyUtilities.GLOBALE_PROPERTY+globale); Lasciandolo in prima posizione non verrĂ  serializzato su DB, ma verrĂ  fornito solo all'interfaccia di notifica passiva */
  177.             l.add(CONFIG_GLOBALE_PROPERTY+globale);
  178.         }
  179.         if(sogliaMs!=null) {
  180.             l.add(CONFIG_TIMEOUT+sogliaMs);
  181.         }
  182.         if(dati!=null) {
  183.             addConfigurazioneEventoAsList(dati, l);
  184.         }
  185.         return l;
  186.     }
  187.     private static void addConfigurazioneEventoAsList(PolicyDati dati, List<String> l) {
  188.         if(dati.getProfilo()!=null) {
  189.             l.add(CONFIG_PROFILO+dati.getProfilo());
  190.         }
  191.         addConfigurazioneEventoRuoloPorta(dati, l);
  192.         if(dati.getIdFruitore()!=null) {
  193.             l.add(CONFIG_FRUITORE+dati.getIdFruitore().toFormatString());
  194.         }
  195.         if(dati.getIdServizio()!=null) {
  196.             if(dati.getIdServizio().getSoggettoErogatore()!=null &&
  197.                     dati.getIdServizio().getSoggettoErogatore().getTipo()!=null &&
  198.                     dati.getIdServizio().getSoggettoErogatore().getNome()!=null) {
  199.                 l.add(CONFIG_EROGATORE+dati.getIdServizio().getSoggettoErogatore().toFormatString());
  200.             }
  201.             if(dati.getIdServizio().getNome()!=null && dati.getIdServizio().getTipo()!=null && dati.getIdServizio().getVersione()!=null) {
  202.                 l.add(CONFIG_SERVIZIO+toFormatStringIDServizio(dati.getIdServizio()));
  203.             }
  204.         }
  205.         if(dati.getGruppo()!=null) {
  206.             l.add(CONFIG_GRUPPO+dati.getGruppo());
  207.         }
  208.         if(dati.getConnettore()!=null) {
  209.             l.add(CONFIG_CONNETTORE+dati.getConnettore());
  210.         }
  211.         if(dati.getTokenPolicyNegoziazione()!=null) {
  212.             l.add(CONFIG_POLICY_NEGOZIAZIONE+dati.getTokenPolicyNegoziazione());
  213.         }
  214.         if(dati.getTokenPolicyValidazioneDynamicDiscovery()!=null) {
  215.             l.add(CONFIG_POLICY_VALIDAZIONE_DYNAMIC_DISCOVERY+dati.getTokenPolicyValidazioneDynamicDiscovery());
  216.         }
  217.         if(dati.getTokenPolicyValidazioneJwt()!=null) {
  218.             l.add(CONFIG_POLICY_VALIDAZIONE_JWT+dati.getTokenPolicyValidazioneJwt());
  219.         }
  220.         if(dati.getTokenPolicyValidazioneIntrospection()!=null) {
  221.             l.add(CONFIG_POLICY_VALIDAZIONE_INTROSPECTION+dati.getTokenPolicyValidazioneIntrospection());
  222.         }
  223.         if(dati.getTokenPolicyValidazioneUserInfo()!=null) {
  224.             l.add(CONFIG_POLICY_VALIDAZIONE_USER_INFO+dati.getTokenPolicyValidazioneUserInfo());
  225.         }
  226.         if(dati.getAttributeAuthority()!=null) {
  227.             l.add(CONFIG_ATTRIBUTE_AUTHORITY+dati.getAttributeAuthority());
  228.         }
  229.         if(dati.getAttributeAuthorityResponseJwt()!=null) {
  230.             l.add(CONFIG_ATTRIBUTE_AUTHORITY_VALIDAZIONE_RISPOSTA_JWT+dati.getAttributeAuthorityResponseJwt());
  231.         }
  232.         addConfigurazioneEventoNomePorta(dati, l);
  233.     }
  234.     private static String toFormatStringIDServizio(IDServizio idServizio){
  235.         StringBuilder sb = new StringBuilder();
  236.         sb.append(idServizio.getTipo());
  237.         sb.append("/");
  238.         sb.append(idServizio.getNome());
  239.         sb.append("/");
  240.         sb.append(idServizio.getVersione());
  241.         return sb.toString();
  242.     }
  243.     private static void addConfigurazioneEventoRuoloPorta(PolicyDati dati, List<String> l) {
  244.         if(dati.getRuoloPorta()!=null) {
  245.             switch (dati.getRuoloPorta()) {
  246.             case DELEGATA:
  247.                 l.add(CONFIG_TIPOLOGIA+CONFIG_TIPOLOGIA_VALUE_DELEGATA);
  248.                 break;
  249.             case APPLICATIVA:
  250.                 l.add(CONFIG_TIPOLOGIA+CONFIG_TIPOLOGIA_VALUE_APPLICATIVA);
  251.                 break;
  252.             default:
  253.                 break;
  254.             }
  255.         }
  256.     }
  257.     private static void addConfigurazioneEventoNomePorta(PolicyDati dati, List<String> l) {
  258.         if(dati.getNomePorta()!=null) {
  259.             if(dati.getRuoloPorta()!=null) {
  260.                 switch (dati.getRuoloPorta()) {
  261.                 case DELEGATA:
  262.                     l.add(CONFIG_NOME_PORTA_OUTBOUND_PROPERTY+dati.getNomePorta());
  263.                     break;
  264.                 case APPLICATIVA:
  265.                     l.add(CONFIG_NOME_PORTA_INBOUND_PROPERTY+dati.getNomePorta());
  266.                     break;
  267.                 default:
  268.                     l.add(CONFIG_NOME_PORTA_PROPERTY+dati.getNomePorta());
  269.                     break;
  270.                 }
  271.             }
  272.             else {
  273.                 l.add(CONFIG_NOME_PORTA_PROPERTY+dati.getNomePorta());
  274.             }
  275.         }
  276.     }
  277.    
  278.     private static String buildConfigurazioneEvento(PolicyDati dati, int sogliaMs, boolean globale) {
  279.        
  280.         List<String> l = buildConfigurazioneEventoAsList(dati, sogliaMs, globale);
  281.         StringBuilder sb = new StringBuilder();
  282.         if(!l.isEmpty()) {
  283.             for (String v : l) {
  284.                 if(sb.length()>0) {
  285.                     sb.append("\n");
  286.                 }
  287.                 sb.append(v);
  288.             }
  289.         }
  290.         return sb.toString();
  291.        
  292.     }
  293.    
  294.     public static SogliaReadTimeout buildSogliaRequestTimeout(int sogliaMs, boolean delegata, IProtocolFactory<?> protocolFactory) {
  295.         return buildSogliaTimeout(sogliaMs, delegata, protocolFactory);
  296.     }
  297.     public static SogliaReadTimeout buildSogliaResponseTimeout(int sogliaMs, boolean delegata, IProtocolFactory<?> protocolFactory) {
  298.         return buildSogliaTimeout(sogliaMs, delegata, protocolFactory);
  299.     }
  300.     private static SogliaReadTimeout buildSogliaTimeout(int sogliaMs, boolean delegata, IProtocolFactory<?> protocolFactory) {
  301.         SogliaReadTimeout soglia = new SogliaReadTimeout();
  302.         soglia.setConfigurazioneGlobale(true);
  303.         soglia.setSogliaMs(sogliaMs);
  304.                
  305.         String api = "APINonIndividuata";
  306.         soglia.setIdConfigurazione(api);
  307.        
  308.         PolicyDati dati = new PolicyDati();
  309.         if(protocolFactory!=null) {
  310.             dati.setProfilo(protocolFactory.getProtocol());
  311.         }
  312.         dati.setRuoloPorta(delegata ? RuoloPolicy.DELEGATA : RuoloPolicy.APPLICATIVA);
  313.        
  314.         soglia.setConfigurazione(buildConfigurazioneEvento(dati, sogliaMs, true));
  315.                
  316.         return soglia;
  317.     }
  318.    
  319.     public static SogliaReadTimeout buildSogliaRequestTimeout(int sogliaMs, boolean configurazioneGlobale, PortaDelegata pd,
  320.             ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  321.         return buildSogliaTimeout(sogliaMs, configurazioneGlobale, pd.getNome(), RuoloPolicy.DELEGATA, null, null,
  322.                 readTimeoutContextParam);
  323.     }
  324.     public static SogliaReadTimeout buildSogliaRequestTimeout(int sogliaMs, boolean configurazioneGlobale, PortaApplicativa pa,
  325.             ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  326.         return buildSogliaTimeout(sogliaMs, configurazioneGlobale, pa.getNome(), RuoloPolicy.APPLICATIVA, null, null,
  327.                 readTimeoutContextParam);
  328.     }
  329.    
  330.     public static SogliaReadTimeout buildSogliaResponseTimeout(int sogliaMs, boolean configurazioneGlobale, PortaDelegata pd, PolicyTimeoutConfig policyConfig,
  331.             ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  332.         return buildSogliaTimeout(sogliaMs, configurazioneGlobale, pd.getNome(), RuoloPolicy.DELEGATA, null, policyConfig,
  333.                 readTimeoutContextParam);
  334.     }
  335.     public static SogliaReadTimeout buildSogliaResponseTimeout(int sogliaMs, boolean configurazioneGlobale, PortaApplicativa pa, String nomeConnettoreAsincrono, PolicyTimeoutConfig policyConfig,
  336.             ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  337.         return buildSogliaTimeout(sogliaMs, configurazioneGlobale, pa.getNome(), RuoloPolicy.APPLICATIVA, nomeConnettoreAsincrono, policyConfig,
  338.                 readTimeoutContextParam);
  339.     }
  340.    
  341.     private static SogliaReadTimeout buildSogliaTimeout(int sogliaMs, boolean configurazioneGlobale, String nomePorta, RuoloPolicy ruoloPorta, String nomeConnettoreAsincrono, PolicyTimeoutConfig policyConfig,
  342.             ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  343.        
  344.         SogliaReadTimeout soglia = new SogliaReadTimeout();
  345.         soglia.setSogliaMs(sogliaMs);
  346.        
  347.         soglia.setConfigurazioneGlobale(configurazioneGlobale);
  348.        
  349.         PolicyDati dati = readConfigurazione(nomePorta, ruoloPorta, nomeConnettoreAsincrono, policyConfig, readTimeoutContextParam);
  350.        
  351.         soglia.setIdConfigurazione(dati.getIdentificativo());
  352.        
  353.         soglia.setConfigurazione(buildConfigurazioneEvento(dati, sogliaMs, configurazioneGlobale));
  354.                
  355.         return soglia;
  356.     }
  357.    
  358.     private static PolicyDati readConfigurazione(String nomePorta, RuoloPolicy ruoloPorta, String nomeConnettoreAsincrono, PolicyTimeoutConfig policyConfig, ReadTimeoutContextParam readTimeoutContextParam) throws DriverConfigurazioneException, ProtocolException {
  359.        
  360.         ConfigurazionePdDManager configPdDManager = ConfigurazionePdDManager.getInstance(readTimeoutContextParam.getState());
  361.        
  362.         StringBuilder sb = new StringBuilder();
  363.        
  364.         PolicyDati dati = RuoloPolicy.DELEGATA.equals(ruoloPorta) ?
  365.                 PolicyVerifier.getIdAPIFruizione(nomePorta, configPdDManager, readTimeoutContextParam.getRequestInfo(), readTimeoutContextParam.getProtocolFactory())
  366.                 :
  367.                 PolicyVerifier.getIdAPIErogazione(nomePorta, configPdDManager, readTimeoutContextParam.getRequestInfo(), readTimeoutContextParam.getProtocolFactory());
  368.         String api = dati.getIdentificativo();
  369.         if(api!=null) {
  370.             api = api.trim();
  371.         }
  372.         sb.append(api);
  373.        
  374.         if(RuoloPolicy.APPLICATIVA.equals(ruoloPorta)) {
  375.             if(nomeConnettoreAsincrono!=null) {
  376.                 sb.append(" (connettore '").append(nomeConnettoreAsincrono).append("')");
  377.                 dati.setConnettore(nomeConnettoreAsincrono);
  378.             }
  379.             else {
  380.                 String connettoriMultipli = ConnettoreUtils.getNomeConnettori(readTimeoutContextParam.getContext());
  381.                 if(connettoriMultipli!=null) {
  382.                     sb.append(" (connettore '").append(connettoriMultipli).append("')");
  383.                     dati.setConnettore(connettoriMultipli);
  384.                 }
  385.             }
  386.         }
  387.        
  388.         addPolicyInfo(sb, policyConfig, dati);
  389.        
  390.         dati.setIdentificativo(sb.toString()); // aggiorno
  391.        
  392.         return dati;
  393.     }
  394.    
  395.     public static void addPolicyInfo(StringBuilder sb, PolicyTimeoutConfig policyConfig) {
  396.         addPolicyInfo(sb, policyConfig, null);
  397.     }
  398.     public static void addPolicyInfo(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  399.        
  400.         addPolicyInfoTokenPolicyNegoziazione(sb, policyConfig, policyDati);
  401.        
  402.         addPolicyInfoTokenPolicyValidazione(sb, policyConfig, policyDati);
  403.        
  404.         addPolicyInfoAttributeAuthority(sb, policyConfig, policyDati);
  405.     }
  406.    
  407.     private static void addPolicyInfoTokenPolicyNegoziazione(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  408.         if(policyConfig!=null && policyConfig.getPolicyNegoziazione()!=null) {
  409.             sb.append(" (").append(ID_POLICY_NEGOZIAZIONE).append(" '").append(policyConfig.getPolicyNegoziazione()).append("')");
  410.             if(policyDati!=null) {
  411.                 policyDati.setTokenPolicyNegoziazione(policyConfig.getPolicyNegoziazione());
  412.             }
  413.         }
  414.     }
  415.     private static void addPolicyInfoTokenPolicyValidazione(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  416.         addPolicyInfoTokenPolicyValidazioneDynamicDiscovery(sb, policyConfig, policyDati);
  417.         addPolicyInfoTokenPolicyValidazioneJwt(sb, policyConfig, policyDati);
  418.         addPolicyInfoTokenPolicyValidazioneIntrospection(sb, policyConfig, policyDati);
  419.         addPolicyInfoTokenPolicyValidazioneUserInfo(sb, policyConfig, policyDati);
  420.     }
  421.     private static void addPolicyInfoTokenPolicyValidazioneDynamicDiscovery(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  422.         if(policyConfig!=null && policyConfig.getPolicyValidazioneDynamicDiscovery()!=null) {
  423.             sb.append(" (").append(ID_POLICY_VALIDAZIONE_DYNAMIC_DISCOVERY).append(" '").append(policyConfig.getPolicyValidazioneDynamicDiscovery()).append("')");
  424.             if(policyDati!=null) {
  425.                 policyDati.setTokenPolicyValidazioneDynamicDiscovery(policyConfig.getPolicyValidazioneDynamicDiscovery());
  426.             }
  427.         }
  428.     }
  429.     private static void addPolicyInfoTokenPolicyValidazioneJwt(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  430.         if(policyConfig!=null && policyConfig.getPolicyValidazioneJwt()!=null) {
  431.             sb.append(" (").append(ID_POLICY_VALIDAZIONE_JWT).append(" '").append(policyConfig.getPolicyValidazioneJwt()).append("')");
  432.             if(policyDati!=null) {
  433.                 policyDati.setTokenPolicyValidazioneJwt(policyConfig.getPolicyValidazioneJwt());
  434.             }
  435.         }
  436.     }
  437.     private static void addPolicyInfoTokenPolicyValidazioneIntrospection(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  438.         if(policyConfig!=null && policyConfig.getPolicyValidazioneIntrospection()!=null) {
  439.             sb.append(" (").append(ID_POLICY_VALIDAZIONE_INTROSPECTION).append(" '").append(policyConfig.getPolicyValidazioneIntrospection()).append("')");
  440.             if(policyDati!=null) {
  441.                 policyDati.setTokenPolicyValidazioneIntrospection(policyConfig.getPolicyValidazioneIntrospection());
  442.             }
  443.         }
  444.     }
  445.     private static void addPolicyInfoTokenPolicyValidazioneUserInfo(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  446.         if(policyConfig!=null && policyConfig.getPolicyValidazioneUserInfo()!=null) {
  447.             sb.append(" (").append(ID_POLICY_VALIDAZIONE_USER_INFO).append(" '").append(policyConfig.getPolicyValidazioneUserInfo()).append("')");
  448.             if(policyDati!=null) {
  449.                 policyDati.setTokenPolicyValidazioneUserInfo(policyConfig.getPolicyValidazioneUserInfo());
  450.             }
  451.         }
  452.     }
  453.     private static void addPolicyInfoAttributeAuthority(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  454.         addPolicyInfoAttributeAuthorityEndpoint(sb, policyConfig, policyDati);
  455.         addPolicyInfoAttributeAuthorityValidazioneJwtResponse(sb, policyConfig, policyDati);
  456.     }
  457.     private static void addPolicyInfoAttributeAuthorityEndpoint(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  458.         if(policyConfig!=null && policyConfig.getAttributeAuthority()!=null) {
  459.             sb.append(" (").append(ID_ATTRIBUTE_AUTHORITY).append(" '").append(policyConfig.getAttributeAuthority()).append("')");
  460.             if(policyDati!=null) {
  461.                 policyDati.setAttributeAuthority(policyConfig.getAttributeAuthority());
  462.             }
  463.         }
  464.     }
  465.     private static void addPolicyInfoAttributeAuthorityValidazioneJwtResponse(StringBuilder sb, PolicyTimeoutConfig policyConfig, PolicyDati policyDati) {
  466.         if(policyConfig!=null && policyConfig.getAttributeAuthorityResponseJwt()!=null) {
  467.             sb.append(" (").append(ID_ATTRIBUTE_AUTHORITY_VALIDAZIONE_RISPOSTA_JWT).append(" '").append(policyConfig.getAttributeAuthorityResponseJwt()).append("')");
  468.             if(policyDati!=null) {
  469.                 policyDati.setAttributeAuthorityResponseJwt(policyConfig.getAttributeAuthorityResponseJwt());
  470.             }
  471.         }
  472.     }
  473.    
  474. }