WSS4JSecurityProvider.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.security.message.wss4j;

  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Properties;

  25. import org.opensaml.saml.saml2.core.NameIDType;
  26. import org.openspcoop2.core.mvc.properties.provider.ProviderException;
  27. import org.openspcoop2.core.mvc.properties.provider.ProviderValidationException;
  28. import org.openspcoop2.core.mvc.properties.utils.MultiPropertiesUtilities;
  29. import org.openspcoop2.security.message.constants.EncryptionKeyTransportAlgorithm;
  30. import org.openspcoop2.security.message.constants.SecurityConstants;
  31. import org.openspcoop2.security.message.saml.SAMLBuilderConfigConstants;
  32. import org.openspcoop2.security.message.xml.XMLCostanti;

  33. /**    
  34.  * SecurityProvider
  35.  *
  36.  * @author Poli Andrea (poli@link.it)
  37.  * @author $Author$
  38.  * @version $Rev$, $Date$
  39.  */
  40. public class WSS4JSecurityProvider extends org.openspcoop2.security.message.xml.SecurityProvider  {

  41.     @Override
  42.     public void validate(Map<String, Properties> mapProperties) throws ProviderException, ProviderValidationException {

  43.         Properties defaultProperties = MultiPropertiesUtilities.getDefaultProperties(mapProperties);
  44.         Properties samlConfig = mapProperties.get(SecurityConstants.SAML_PROF_REF_ID);
  45.        
  46.         boolean envelopedSaml = false;
  47.         if(defaultProperties.containsKey(SecurityConstants.SAML_ENVELOPED_SAML_SIGNATURE_XMLCONFIG_PREFIX_ID)) {
  48.             String tmp = defaultProperties.getProperty(SecurityConstants.SAML_ENVELOPED_SAML_SIGNATURE_XMLCONFIG_PREFIX_ID);
  49.             envelopedSaml = Boolean.parseBoolean(tmp);
  50.         }
  51.        
  52.         boolean holderOfKey = false;
  53.         // receiver
  54.         if(defaultProperties.containsKey(SecurityConstants.SAML_SUBJECT_CONFIRMATION_VALIDATION_METHOD_XMLCONFIG_ID)) {
  55.             String tmp = defaultProperties.getProperty(SecurityConstants.SAML_SUBJECT_CONFIRMATION_VALIDATION_METHOD_XMLCONFIG_ID);
  56.             holderOfKey = SecurityConstants.SAML_SUBJECT_CONFIRMATION_VALIDATION_METHOD_XMLCONFIG_ID_HOLDER_OF_KEY.equals(tmp);
  57.         }
  58.         // sender
  59.         else if(samlConfig!=null &&
  60.             (samlConfig.containsKey(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD))
  61.             ){
  62.             String tmp = samlConfig.getProperty(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD);
  63.             holderOfKey = SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_HOLDER_OF_KEY.equals(tmp);
  64.         }
  65.        
  66.         if(holderOfKey && !envelopedSaml) {
  67.             throw new ProviderValidationException("Subject Confirmation Method 'Holder of Key' require Enveloped SAML Signature");
  68.         }
  69.        
  70.         boolean bearer = false;
  71.         // sender
  72.         if(samlConfig!=null &&
  73.             (samlConfig.containsKey(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD))
  74.             ){
  75.             String tmp = samlConfig.getProperty(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD);
  76.             bearer = SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_BEARER.equals(tmp);
  77.         }
  78.        
  79.         if(bearer && !envelopedSaml) {
  80.             throw new ProviderValidationException("Subject Confirmation Method 'Bearer' require Enveloped SAML Signature");
  81.         }
  82.        
  83.         super.validate(mapProperties);
  84.     }  
  85.    
  86.     @Override
  87.     public List<String> getValues(String id) throws ProviderException {
  88.         if(SecurityConstants.USERNAME_TOKEN_PW_TYPE.equals(id)) {
  89.             List<String> l = new ArrayList<>();
  90.             l.add(SecurityConstants.USERNAME_TOKEN_PW_TYPE_DIGEST);
  91.             l.add(SecurityConstants.USERNAME_TOKEN_PW_TYPE_TEXT);
  92.             l.add(SecurityConstants.USERNAME_TOKEN_PW_TYPE_NONE);
  93.             return l;
  94.         }
  95.         else if(SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE.equals(id)) {
  96.             List<String> l = new ArrayList<>();
  97.             l.add(SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE_SINGLE);
  98.             l.add(SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE_MAP);
  99.             return l;
  100.         }
  101.         else if(SecurityConstants.SAML_ISSUER_FORMAT_XMLCONFIG_ID_2.equals(id) ||
  102.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_1.equals(id) ||
  103.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_2.equals(id)) {
  104.             List<String> l = new ArrayList<>();
  105.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_UNSPECIFIED);
  106.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_EMAIL);
  107.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_X509_SUBJECT);
  108.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_WIN_DOMAIN_QUALIFIED);
  109.             if(SecurityConstants.SAML_ISSUER_FORMAT_XMLCONFIG_ID_2.equals(id) ||
  110.                     SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_2.equals(id)) {
  111.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_KERBEROS); // 2.0
  112.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_ENTITY); // 2.0
  113.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_PERSISTENT); // 2.0
  114.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_TRANSIENT); // 2.0
  115.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_ENCRYPTED); // 2.0
  116.             }
  117.             return l;
  118.         }
  119.         else if(SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_1.equals(id) ||
  120.                 SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_2.equals(id) ) {
  121.             List<String> l = new ArrayList<>();
  122.             if(SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_1.equals(id) ) {
  123.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_ARTIFACT);
  124.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_IDENTITY);
  125.             }
  126.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_BEARER);
  127.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_HOLDER_OF_KEY);
  128.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_SENDER_VOUCHES);
  129.             return l;
  130.         }
  131.         else if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_1.equals(id) ||
  132.                 SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_2.equals(id) ) {
  133.             List<String> l = new ArrayList<>();
  134.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_UNSPECIFIED);
  135.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_PASSWORD);
  136.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_KERBEROS);
  137.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_TLS);
  138.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_X509);
  139.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_PGP);
  140.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_SRP);
  141.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_SPKI);
  142.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_DSIG);
  143.             if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_1.equals(id) ) {
  144.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_HARDWARE);
  145.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_XKMS);
  146.             }
  147.             if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_2.equals(id) ) {
  148.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_INTERNET_PROTOCOL);
  149.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_INTERNET_PROTOCOL_PASSWORD);
  150.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_MOBILE_ONE_FACTOR_UNREGISTERED);
  151.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_MOBILE_TWO_FACTOR_UNREGISTERED);
  152.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_MOBILE_ONE_FACTOR_CONTRACT);
  153.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_MOBILE_TWO_FACTOR_CONTRACT);
  154.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_PASSWORD_PROTECTED_TRANSPORT);
  155.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_PREVIOUS_SESSION);
  156.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_SMARTCARD);
  157.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_SMARTCARD_PKI);
  158.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_SOFTWARE_PKI);
  159.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_TELEPHONY);
  160.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_NOMAD_TELEPHONY);
  161.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_PERSONAL_TELEPHONY);
  162.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_AUTHENTICATED_TELEPHONY);
  163.                 l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_TIME_SYNC);
  164.             }
  165.             return l;
  166.         }
  167.         else if(id.startsWith(SecurityConstants.SAML_ATTRIBUTE_STATEMENT_FORMAT_XMLCONFIG_PREFIX_ID)) {
  168.             List<String> l = new ArrayList<>();
  169.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_VALUE_UNSPECIFIED);
  170.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_VALUE_URI);
  171.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_VALUE_BASIC);
  172.            
  173.             return l;
  174.         }
  175.         else {
  176.             return super.getValues(id);
  177.         }
  178.     }
  179.    
  180.     private static final String PASSWORD = "Password";
  181.     private static final String PASSWORD_PREFIX = PASSWORD+" ";
  182.    
  183.     @Override
  184.     public List<String> getLabels(String id) throws ProviderException {
  185.         if(SecurityConstants.USERNAME_TOKEN_PW_TYPE.equals(id)) {
  186.             List<String> l = new ArrayList<>();
  187.             l.add(PASSWORD_PREFIX+SecurityConstants.USERNAME_TOKEN_PW_TYPE_DIGEST.replace(PASSWORD, ""));
  188.             l.add(PASSWORD_PREFIX+SecurityConstants.USERNAME_TOKEN_PW_TYPE_TEXT.replace(PASSWORD, ""));
  189.             l.add(PASSWORD_PREFIX+SecurityConstants.USERNAME_TOKEN_PW_TYPE_NONE.replace(PASSWORD, ""));
  190.             return l;
  191.         }
  192.         else if(SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE.equals(id)) {
  193.             List<String> l = new ArrayList<>();
  194.             l.add("Default");
  195.             l.add("Mappa");
  196.             return l;
  197.         }
  198.         else if(SecurityConstants.SAML_ISSUER_FORMAT_XMLCONFIG_ID_2.equals(id) ||
  199.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_1.equals(id) ||
  200.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_2.equals(id)) {
  201.             List<String> l = new ArrayList<>();
  202.             l.add(NameIDType.UNSPECIFIED);
  203.             l.add(NameIDType.EMAIL);
  204.             l.add(NameIDType.X509_SUBJECT);
  205.             l.add(NameIDType.WIN_DOMAIN_QUALIFIED);
  206.             if(SecurityConstants.SAML_ISSUER_FORMAT_XMLCONFIG_ID_2.equals(id) ||
  207.                     SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_2.equals(id)) {
  208.                 l.add(NameIDType.KERBEROS); // 2.0
  209.                 l.add(NameIDType.ENTITY); // 2.0
  210.                 l.add(NameIDType.PERSISTENT); // 2.0
  211.                 l.add(NameIDType.TRANSIENT); // 2.0
  212.                 l.add(NameIDType.ENCRYPTED); // 2.0
  213.             }
  214.             return l;
  215.         }
  216.         else if(SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_1.equals(id) ) {
  217.             List<String> l = new ArrayList<>();
  218.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_ARTIFACT_SAML_10);
  219.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_IDENTITY_SAML_10);
  220.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_BEARER_SAML_10);
  221.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_HOLDER_OF_KEY_SAML_10);
  222.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_SENDER_VOUCHES_SAML_10);
  223.             return l;
  224.         }
  225.         else if(SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_2.equals(id) ) {
  226.             List<String> l = new ArrayList<>();
  227.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_BEARER_SAML_20);
  228.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_HOLDER_OF_KEY_SAML_20);
  229.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_SENDER_VOUCHES_SAML_20);
  230.             return l;
  231.         }
  232.         else if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_1.equals(id)) {
  233.             List<String> l = new ArrayList<>();
  234.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_UNSPECIFIED_SAML10);
  235.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PASSWORD_SAML10);
  236.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_KERBEROS_SAML10);
  237.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_TLS_SAML10);
  238.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_X509_SAML10);
  239.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PGP_SAML10);
  240.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SRP_SAML10);
  241.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SPKI_SAML10);
  242.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_DSIG_SAML10);
  243.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_HARDWARE_SAML10);
  244.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_XKMS_SAML10);
  245.             return l;
  246.         }
  247.         else if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_2.equals(id) ) {
  248.             List<String> l = new ArrayList<>();
  249.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_UNSPECIFIED_SAML20);
  250.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PASSWORD_SAML20);
  251.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_KERBEROS_SAML20);
  252.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_TLS_SAML20);
  253.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_X509_SAML20);
  254.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PGP_SAML20);
  255.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SRP_SAML20);
  256.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SPKI_SAML20);
  257.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_DSIG_SAML20);
  258.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_INTERNET_PROTOCOL_SAML20);
  259.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_INTERNET_PROTOCOL_PASSWORD_SAML20);
  260.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_MOBILE_ONE_FACTOR_UNREGISTERED_SAML20);
  261.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_MOBILE_TWO_FACTOR_UNREGISTERED_SAML20);
  262.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_MOBILE_ONE_FACTOR_CONTRACT_SAML20);
  263.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_MOBILE_TWO_FACTOR_CONTRACT_SAML20);
  264.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PASSWORD_PROTECTED_TRANSPORT_SAML20);
  265.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PREVIOUS_SESSION_SAML20);
  266.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SMARTCARD_SAML20);
  267.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SMARTCARD_PKI_SAML20);
  268.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_SOFTWARE_PKI_SAML20);
  269.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_TELEPHONY_SAML20);
  270.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_NOMAD_TELEPHONY_SAML20);
  271.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_PERSONAL_TELEPHONY_SAML20);
  272.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_AUTHENTICATED_TELEPHONY_SAML20);
  273.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_TIME_SYNC_SAML20);
  274.             return l;
  275.         }
  276.         else if(id.startsWith(SecurityConstants.SAML_ATTRIBUTE_STATEMENT_FORMAT_XMLCONFIG_PREFIX_ID)) {
  277.             List<String> l = new ArrayList<>();
  278.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_UNSPECIFIED_SAML20);
  279.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_URI_SAML20);
  280.             l.add(SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_BASIC_SAML20);
  281.            
  282.             return l;
  283.         }
  284.         else {
  285.             return super.getLabels(id);
  286.         }
  287.     }
  288.    
  289.    
  290.     @Override
  291.     public String getDefault(String id) throws ProviderException {
  292.        
  293.         if(SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE.equals(id)) {
  294.             return SecurityConstants.USERNAME_TOKEN_PW_MAP_MODE_SINGLE;
  295.         }
  296.         else if(XMLCostanti.ID_ENCRYPT_TRANSPORT_KEY_WRAP_ALGORITHM.equals(id)) {
  297.             return EncryptionKeyTransportAlgorithm.RSA_OAEP.getUri();
  298.         }
  299.         else if(SecurityConstants.SAML_ISSUER_FORMAT_XMLCONFIG_ID_2.equals(id) ||
  300.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_1.equals(id) ||
  301.                 SecurityConstants.SAML_SUBJECT_FORMAT_XMLCONFIG_ID_2.equals(id)) {
  302.             return SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_NAMEID_FORMAT_VALUE_UNSPECIFIED;
  303.         }
  304.         else if(SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_1.equals(id) ||
  305.                 SecurityConstants.SAML_SUBJECT_CONFIRMATION_METHOD_XMLCONFIG_ID_2.equals(id) ) {
  306.             return SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_SUBJECT_CONFIRMATION_METHOD_VALUE_SENDER_VOUCHES;
  307.         }
  308.         else if(SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_1.equals(id) ||
  309.                 SecurityConstants.SAML_AUTHN_CONTEXT_CLASS_REF_XMLCONFIG_ID_2.equals(id) ) {
  310.             return SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_AUTHN_VALUE_UNSPECIFIED;
  311.         }
  312.         else if(id.startsWith(SecurityConstants.SAML_ATTRIBUTE_STATEMENT_FORMAT_XMLCONFIG_PREFIX_ID)) {
  313.             return SAMLBuilderConfigConstants.SAML_CONFIG_BUILDER_ATTRIBUTE_SUFFIX_FORMAT_NAME_VALUE_UNSPECIFIED;
  314.         }
  315.         else {
  316.             return super.getDefault(id);
  317.         }
  318.        
  319.     }

  320. }