ConnettoreHTTPApiHelper.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.config.rs.server.api.impl.erogazioni;
import static org.openspcoop2.utils.service.beans.utils.BaseHelper.evalnull;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.openspcoop2.core.config.rs.server.api.impl.Enums;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneApiKey;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneHttpBasic;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneHttps;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneHttpsClient;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneHttpsServer;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneProxy;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneTimeout;
import org.openspcoop2.core.config.rs.server.model.ConnettoreEnum;
import org.openspcoop2.core.config.rs.server.model.ConnettoreHttp;
import org.openspcoop2.core.config.rs.server.model.KeystoreEnum;
import org.openspcoop2.core.config.rs.server.model.OneOfApplicativoServerConnettore;
import org.openspcoop2.core.config.rs.server.model.OneOfConnettoreErogazioneConnettore;
import org.openspcoop2.core.config.rs.server.model.OneOfConnettoreFruizioneConnettore;
import org.openspcoop2.core.config.rs.server.model.SslTipologiaEnum;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.core.registry.Connettore;
import org.openspcoop2.utils.certificate.hsm.HSMUtils;
import org.openspcoop2.utils.service.beans.utils.BaseHelper;
import org.openspcoop2.utils.service.fault.jaxrs.FaultCode;
import org.openspcoop2.web.ctrlstat.costanti.ConnettoreServletType;
import org.openspcoop2.web.ctrlstat.plugins.ExtendedConnettore;
import org.openspcoop2.web.ctrlstat.plugins.servlet.ServletExtendedConnettoreUtils;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
import org.openspcoop2.web.lib.mvc.Costanti;
import org.openspcoop2.web.lib.mvc.ServletUtils;
/**
* ConnettoreHTTPApiHelper
*
* @author $Author$
* @version $Rev$, $Date$
*
*/
public class ConnettoreHTTPApiHelper extends AbstractConnettoreApiHelper<ConnettoreHttp> {
@Override
protected boolean connettoreCheckData(ConnettoreHttp conn, ErogazioniEnv env, boolean erogazione) throws Exception {
final boolean http_stato = conn.getAutenticazioneHttp() != null;
final boolean proxy_enabled = conn.getProxy() != null;
final boolean tempiRisposta_enabled = conn.getTempiRisposta() != null;
final ConnettoreConfigurazioneApiKey httpApiKey = conn.getAutenticazioneApikey();
boolean apiKey = (httpApiKey!=null && httpApiKey.getApiKey()!=null && StringUtils.isNotEmpty(httpApiKey.getApiKey()));
final ConnettoreConfigurazioneHttps httpsConf = conn.getAutenticazioneHttps();
final ConnettoreConfigurazioneHttpBasic httpConf = conn.getAutenticazioneHttp();
final String endpointtype = httpsConf != null ? TipiConnettore.HTTPS.getNome() : TipiConnettore.HTTP.getNome();
final Properties parametersPOST = null;
org.openspcoop2.core.registry.Connettore conTmp = null;
List<ExtendedConnettore> listExtendedConnettore =
ServletExtendedConnettoreUtils.getExtendedConnettore(conTmp, ConnettoreServletType.ACCORDO_SERVIZIO_PARTE_SPECIFICA_ADD, env.apsHelper,
parametersPOST, false, endpointtype);
final ConnettoreConfigurazioneHttpsClient httpsClient = httpsConf!=null ? evalnull( httpsConf::getClient ) : null;
final ConnettoreConfigurazioneHttpsServer httpsServer = httpsConf!=null ? evalnull( httpsConf::getServer ) : null;
final ConnettoreConfigurazioneProxy proxy = conn.getProxy();
final ConnettoreConfigurazioneTimeout timeoutConf = conn.getTempiRisposta();
final String tokenPolicy = conn.getTokenPolicy();
final boolean autenticazioneToken = tokenPolicy!=null;
final boolean httpsstato = httpsClient != null; // Questo è per l'autenticazione client.
String httpskeystore = ErogazioniCheckNotNull.getHttpskeystore(httpsClient);
return env.saHelper.endPointCheckData(
null,
env.tipo_protocollo,
erogazione,
endpointtype,
conn.getEndpoint(),
null, // nome
null, // tipo
httpConf!=null ? evalnull( httpConf::getUsername ) : null,
httpConf!=null ? evalnull( httpConf::getPassword ) : null,
null, // this.initcont,
null, // this.urlpgk,
null, // provurl jms,
null, // connfact,
null, // sendas,
conn.getEndpoint(), // this.httpsurl,
evalnull( () -> httpsConf.getTipologia().toString() ), // this.httpstipologia
BaseHelper.evalorElse( () -> httpsConf.isHostnameVerifier().booleanValue(), false ), // this.httpshostverify,
(httpsConf!=null ? !httpsConf.isTrustAllServerCerts() : ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS), // httpsTrustVerifyCert
httpsServer!=null ? evalnull( httpsServer::getTruststorePath ) : null, // this.httpspath
evalnull( () -> getTruststoreType(httpsServer) ), // this.httpstipo,
httpsServer!=null ? evalnull( httpsServer::getTruststorePassword ) : null, // this.httpspwd,
httpsServer!=null ? evalnull( httpsServer::getAlgoritmo ) : null, // this.httpsalgoritmo
httpsstato,
httpskeystore,
"", // httpspwdprivatekeytrust,
httpsClient!=null ? evalnull( httpsClient::getKeystorePath ) : null, // pathkey
evalnull( () -> getKeystoreType(httpsClient) ), // this.httpstipokey
httpsClient!=null ? evalnull( httpsClient::getKeystorePassword ) : null, // this.httpspwdkey
httpsClient!=null ? evalnull( httpsClient::getKeyPassword ) : null, // this.httpspwdprivatekey,
httpsClient!=null ? evalnull( httpsClient::getAlgoritmo ) : null, // this.httpsalgoritmokey,
httpsClient!=null ? evalnull( httpsClient::getKeyAlias ) : null, // httpsKeyAlias
httpsServer!=null ? evalnull( httpsServer::getTruststoreCrl ) : null, // httpsTrustStoreCRLs
httpsServer!=null ? evalnull( httpsServer::getTruststoreOcspPolicy) : null, // httpsTrustStoreOCSPPolicy
httpsClient!=null ? evalnull( httpsClient::getKeystoreByokPolicy) : null, // httpsKeyStoreBYOKPolicy
null, // tipoconn (personalizzato)
ServletUtils.boolToCheckBoxStatus( http_stato ), //autenticazioneHttp,
ServletUtils.boolToCheckBoxStatus( proxy_enabled ),
proxy!=null ? evalnull( proxy::getHostname ) : null,
evalnull( () -> proxy.getPorta().toString() ),
proxy!=null ? evalnull( proxy::getUsername ) : null,
proxy!=null ? evalnull( proxy::getPassword ) : null,
ServletUtils.boolToCheckBoxStatus( tempiRisposta_enabled ),
evalnull( () -> timeoutConf.getConnectionTimeout().toString()), // this.tempiRisposta_connectionTimeout,
evalnull( () -> timeoutConf.getConnectionReadTimeout().toString()), //null, // this.tempiRisposta_readTimeout,
evalnull( () -> timeoutConf.getTempoMedioRisposta().toString()), // this.tempiRisposta_tempoMedioRisposta,
"no", // this.opzioniAvanzate,
"", // this.transfer_mode,
"", // this.transfer_mode_chunk_size,
"", // this.redirect_mode,
"", // this.redirect_max_hop,
null, // this.requestOutputFileName,
null, // this.requestOutputFileName_permissions
null, // this.requestOutputFileNameHeaders,
null, // this.requestOutputFileNameHeaders_permissions
null, // this.requestOutputParentDirCreateIfNotExists,
null, // this.requestOutputOverwriteIfExists,
null, // this.responseInputMode,
null, // this.responseInputFileName,
null, // this.responseInputFileNameHeaders,
null, // this.responseInputDeleteAfterRead,
null, // this.responseInputWaitTime,
autenticazioneToken,
tokenPolicy,
apiKey ? Costanti.CHECK_BOX_ENABLED : Costanti.CHECK_BOX_DISABLED, // autenticazioneApiKey
apiKey &&
env.erogazioniHelper.isAutenticazioneApiKeyUseOAS3Names(
evalnull(httpApiKey::getApiKeyHeader),
evalnull(httpApiKey::getAppIdHeader)
), // useOAS3Names
apiKey &&
env.erogazioniHelper.isAutenticazioneApiKeyUseAppId(
evalnull(httpApiKey::getAppId)
), // useAppId
httpApiKey!=null ? evalnull( httpApiKey::getApiKeyHeader ) : null, // apiKeyHeader
httpApiKey!=null ? evalnull( httpApiKey::getApiKey ) : null, // apiKeyValue
httpApiKey!=null ? evalnull( httpApiKey::getAppIdHeader ) : null, // appIdHeader
httpApiKey!=null ? evalnull( httpApiKey::getAppId ) : null, // appIdValue
listExtendedConnettore,
false, // erogazioneServizioApplicativoServerEnabled,
null // rogazioneServizioApplicativoServer
);
}
@Override
protected Connettore fillConnettoreRegistro(org.openspcoop2.core.registry.Connettore regConnettore, ErogazioniEnv env, ConnettoreHttp conn, String oldConnT) throws Exception {
final boolean proxy_enabled = conn.getProxy() != null;
final boolean tempiRisposta_enabled = conn.getTempiRisposta() != null;
final ConnettoreConfigurazioneApiKey httpApiKey = conn.getAutenticazioneApikey();
final ConnettoreConfigurazioneHttps httpsConf = conn.getAutenticazioneHttps();
final ConnettoreConfigurazioneHttpBasic httpConf = conn.getAutenticazioneHttp();
final String endpointtype = httpsConf != null ? TipiConnettore.HTTPS.getNome() : TipiConnettore.HTTP.getNome();
final Properties parametersPOST = null;
org.openspcoop2.core.registry.Connettore conTmp = null;
List<ExtendedConnettore> listExtendedConnettore =
ServletExtendedConnettoreUtils.getExtendedConnettore(conTmp, ConnettoreServletType.ACCORDO_SERVIZIO_PARTE_SPECIFICA_ADD, env.apsHelper,
parametersPOST, false, endpointtype);
final ConnettoreConfigurazioneHttpsClient httpsClient = httpsConf!=null ? evalnull( httpsConf::getClient ) : null;
final ConnettoreConfigurazioneHttpsServer httpsServer = httpsConf!=null ? evalnull( httpsConf::getServer ) : null;
final ConnettoreConfigurazioneProxy proxy = conn.getProxy();
final ConnettoreConfigurazioneTimeout timeoutConf = conn.getTempiRisposta();
final String tokenPolicy = conn.getTokenPolicy();
final boolean httpsstato = httpsClient != null; // Questo è per l'autenticazione client.
String httpskeystore = ErogazioniCheckNotNull.getHttpskeystore(httpsClient);
env.apsHelper.fillConnettore(
regConnettore,
conn.isDebug() != null && conn.isDebug() ? "true" : "false", // this.connettoreDebug,
endpointtype, // endpointtype
oldConnT, // oldConnT
"", // tipoConn Personalizzato
conn.getEndpoint(), // this.url,
null, // this.nome,
null, // this.tipo,
httpConf!=null ? evalnull( httpConf::getUsername ) : null,
httpConf!=null ? evalnull( httpConf::getPassword ) : null,
null, // this.initcont,
null, // this.urlpgk,
conn.getEndpoint(), // this.url,
null, // this.connfact,
null, // this.sendas,
conn.getEndpoint(), // this.httpsurl,
evalnull( () -> httpsConf.getTipologia().toString() ), // this.httpstipologia
BaseHelper.evalorElse( () -> httpsConf.isHostnameVerifier().booleanValue(), false ), // this.httpshostverify,
(httpsConf!=null ? !httpsConf.isTrustAllServerCerts() : ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS), // httpsTrustVerifyCert
httpsServer!=null ? evalnull( httpsServer::getTruststorePath ) : null, // this.httpspath
evalnull( () -> getTruststoreType(httpsServer) ), // this.httpstipo,
httpsServer!=null ? evalnull( httpsServer::getTruststorePassword ) : null, // this.httpspwd,
httpsServer!=null ? evalnull( httpsServer::getAlgoritmo ) : null, // this.httpsalgoritmo
httpsstato,
httpskeystore, // this.httpskeystore,
"", // this.httpspwdprivatekeytrust
httpsClient!=null ? evalnull( httpsClient::getKeystorePath ) : null, // pathkey
evalnull( () -> getKeystoreType(httpsClient) ), // this.httpstipokey
httpsClient!=null ? evalnull( httpsClient::getKeystorePassword ) : null, // this.httpspwdkey
httpsClient!=null ? evalnull( httpsClient::getKeyPassword ) : null, // this.httpspwdprivatekey,
httpsClient!=null ? evalnull( httpsClient::getAlgoritmo ) : null, // this.httpsalgoritmokey,
httpsClient!=null ? evalnull( httpsClient::getKeyAlias ) : null, // httpsKeyAlias
httpsServer!=null ? evalnull( httpsServer::getTruststoreCrl ) : null, // httpsTrustStoreCRLs
httpsServer!=null ? evalnull( httpsServer::getTruststoreOcspPolicy) : null, // httpsTrustStoreOCSPPolicy
httpsClient!=null ? evalnull( httpsClient::getKeystoreByokPolicy) : null, // httpsKeyStoreBYOKPolicy
ServletUtils.boolToCheckBoxStatus( proxy_enabled ),
proxy!=null ? evalnull( proxy::getHostname ) : null,
evalnull( () -> proxy.getPorta().toString() ),
proxy!=null ? evalnull( proxy::getUsername ) : null,
proxy!=null ? evalnull( proxy::getPassword ) : null,
ServletUtils.boolToCheckBoxStatus( tempiRisposta_enabled ),
evalnull( () -> timeoutConf.getConnectionTimeout().toString()), // this.tempiRisposta_connectionTimeout,
evalnull( () -> timeoutConf.getConnectionReadTimeout().toString()), //null, // this.tempiRisposta_readTimeout,
evalnull( () -> timeoutConf.getTempoMedioRisposta().toString()), // this.tempiRisposta_tempoMedioRisposta,
"no", // this.opzioniAvanzate,
"", // this.transfer_mode,
"", // this.transfer_mode_chunk_size,
"", // this.redirect_mode,
"", // this.redirect_max_hop,
null, // this.requestOutputFileName,
null, // this.requestOutputFileName_permissions
null, // this.requestOutputFileNameHeaders,
null, // this.requestOutputFileNameHeaders_permissions
null, // this.requestOutputParentDirCreateIfNotExists,
null, // this.requestOutputOverwriteIfExists,
null, // this.responseInputMode,
null, // this.responseInputFileName,
null, // this.responseInputFileNameHeaders,
null, // this.responseInputDeleteAfterRead,
null, // this.responseInputWaitTime,
tokenPolicy,
httpApiKey!=null ? evalnull( httpApiKey::getApiKeyHeader ) : null, // apiKeyHeader
httpApiKey!=null ? evalnull( httpApiKey::getApiKey ) : null, // apiKeyValue
httpApiKey!=null ? evalnull( httpApiKey::getAppIdHeader ) : null, // appIdHeader
httpApiKey!=null ? evalnull( httpApiKey::getAppId ) : null, // appIdValue
null, // connettoreStatusParams
listExtendedConnettore);
return regConnettore;
}
@Override
protected org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(
org.openspcoop2.core.config.Connettore regConnettore, ErogazioniEnv env, ConnettoreHttp conn,
String oldConnT) throws Exception {
final boolean proxy_enabled = conn.getProxy() != null;
final boolean tempiRisposta_enabled = conn.getTempiRisposta() != null;
final ConnettoreConfigurazioneApiKey httpApiKey = conn.getAutenticazioneApikey();
final ConnettoreConfigurazioneHttps httpsConf = conn.getAutenticazioneHttps();
final ConnettoreConfigurazioneHttpBasic httpConf = conn.getAutenticazioneHttp();
final String endpointtype = httpsConf != null ? TipiConnettore.HTTPS.getNome() : TipiConnettore.HTTP.getNome();
final Properties parametersPOST = null;
org.openspcoop2.core.registry.Connettore conTmp = null;
List<ExtendedConnettore> listExtendedConnettore =
ServletExtendedConnettoreUtils.getExtendedConnettore(conTmp, ConnettoreServletType.ACCORDO_SERVIZIO_PARTE_SPECIFICA_ADD, env.apsHelper,
parametersPOST, false, endpointtype);
final ConnettoreConfigurazioneHttpsClient httpsClient = httpsConf!=null ? evalnull( httpsConf::getClient ) : null;
final ConnettoreConfigurazioneHttpsServer httpsServer = httpsConf!=null ? evalnull( httpsConf::getServer ) : null;
final ConnettoreConfigurazioneProxy proxy = conn.getProxy();
final ConnettoreConfigurazioneTimeout timeoutConf = conn.getTempiRisposta();
final String tokenPolicy = conn.getTokenPolicy();
final boolean httpsstato = httpsClient != null; // Questo è per l'autenticazione client.
String httpskeystore = ErogazioniCheckNotNull.getHttpskeystore(httpsClient);
env.apsHelper.fillConnettore(
regConnettore,
conn.isDebug() != null && conn.isDebug() ? "true" : "false", // this.connettoreDebug,
endpointtype, // endpointtype
oldConnT, // oldConnT
"", // tipoConn Personalizzato
conn.getEndpoint(), // this.url,
null, // this.nome,
null, // this.tipo,
httpConf!=null ? evalnull( httpConf::getUsername ) : null,
httpConf!=null ? evalnull( httpConf::getPassword ) : null,
null, // this.initcont,
null, // this.urlpgk,
conn.getEndpoint(), // this.url,
null, // this.connfact,
null, // this.sendas,
conn.getEndpoint(), // this.httpsurl,
evalnull( () -> httpsConf.getTipologia().toString() ), // this.httpstipologia
BaseHelper.evalorElse( () -> httpsConf.isHostnameVerifier().booleanValue(), false ), // this.httpshostverify,
(httpsConf!=null ? !httpsConf.isTrustAllServerCerts() : ConnettoriCostanti.DEFAULT_CONNETTORE_HTTPS_TRUST_VERIFY_CERTS), // httpsTrustVerifyCert
httpsServer!=null ? evalnull( httpsServer::getTruststorePath ) : null, // this.httpspath
evalnull( () -> getTruststoreType(httpsServer) ), // this.httpstipo,
httpsServer!=null ? evalnull( httpsServer::getTruststorePassword ) : null, // this.httpspwd,
httpsServer!=null ? evalnull( httpsServer::getAlgoritmo ) : null, // this.httpsalgoritmo
httpsstato,
httpskeystore, // this.httpskeystore,
"", // this.httpspwdprivatekeytrust
httpsClient!=null ? evalnull( httpsClient::getKeystorePath ) : null, // pathkey
evalnull( () -> getKeystoreType(httpsClient) ), // this.httpstipokey
httpsClient!=null ? evalnull( httpsClient::getKeystorePassword ) : null, // this.httpspwdkey
httpsClient!=null ? evalnull( httpsClient::getKeyPassword ) : null, // this.httpspwdprivatekey,
httpsClient!=null ? evalnull( httpsClient::getAlgoritmo ) : null, // this.httpsalgoritmokey,
httpsClient!=null ? evalnull( httpsClient::getKeyAlias ) : null, // httpsKeyAlias
httpsServer!=null ? evalnull( httpsServer::getTruststoreCrl ) : null, // httpsTrustStoreCRLs
httpsServer!=null ? evalnull( httpsServer::getTruststoreOcspPolicy) : null, // httpsTrustStoreOCSPPolicy
httpsClient!=null ? evalnull( httpsClient::getKeystoreByokPolicy) : null, // httpsKeyStoreBYOKPolicy
ServletUtils.boolToCheckBoxStatus( proxy_enabled ),
proxy!=null ? evalnull( proxy::getHostname ) : null,
evalnull( () -> proxy.getPorta().toString() ),
proxy!=null ? evalnull( proxy::getUsername ) : null,
proxy!=null ? evalnull( proxy::getPassword ) : null,
ServletUtils.boolToCheckBoxStatus( tempiRisposta_enabled ),
evalnull( () -> timeoutConf.getConnectionTimeout().toString()), // this.tempiRisposta_connectionTimeout,
evalnull( () -> timeoutConf.getConnectionReadTimeout().toString()), //null, // this.tempiRisposta_readTimeout,
evalnull( () -> timeoutConf.getTempoMedioRisposta().toString()), // this.tempiRisposta_tempoMedioRisposta,
"no", // this.opzioniAvanzate,
"", // this.transfer_mode,
"", // this.transfer_mode_chunk_size,
"", // this.redirect_mode,
"", // this.redirect_max_hop,
null, // this.requestOutputFileName,
null, // this.requestOutputFileName_permissions
null, // this.requestOutputFileNameHeaders,
null, // this.requestOutputFileNameHeaders_permissions
null, // this.requestOutputParentDirCreateIfNotExists,
null, // this.requestOutputOverwriteIfExists,
null, // this.responseInputMode,
null, // this.responseInputFileName,
null, // this.responseInputFileNameHeaders,
null, // this.responseInputDeleteAfterRead,
null, // this.responseInputWaitTime,
tokenPolicy,
httpApiKey!=null ? evalnull( httpApiKey::getApiKeyHeader ) : null, // apiKeyHeader
httpApiKey!=null ? evalnull( httpApiKey::getApiKey ) : null, // apiKeyValue
httpApiKey!=null ? evalnull( httpApiKey::getAppIdHeader ) : null, // appIdHeader
httpApiKey!=null ? evalnull( httpApiKey::getAppId ) : null, // appIdValue
null, // connettoreStatusParams
listExtendedConnettore);
return regConnettore;
}
@Override
public ConnettoreHttp buildConnettore(Map<String, String> props, String tipo) {
ConnettoreHttp c = new ConnettoreHttp();
c.setTipo(ConnettoreEnum.HTTP);
c.setEndpoint(props.get(CostantiDB.CONNETTORE_HTTP_LOCATION));
c.setDebug(Boolean.parseBoolean(props.get(CostantiDB.CONNETTORE_DEBUG)));
ConnettoreConfigurazioneHttpBasic http = new ConnettoreConfigurazioneHttpBasic();
http.setPassword(evalnull( () -> props.get(CostantiDB.CONNETTORE_PWD).trim()));
http.setUsername(evalnull( () -> props.get(CostantiDB.CONNETTORE_USER).trim()));
if ( !StringUtils.isAllEmpty(http.getPassword(), http.getUsername()) ) {
c.setAutenticazioneHttp(http);
}
String apiKey = props.get(CostantiDB.CONNETTORE_APIKEY);
if(apiKey!=null && StringUtils.isNotEmpty(apiKey.trim())) {
ConnettoreConfigurazioneApiKey apiKeyConf = new ConnettoreConfigurazioneApiKey();
apiKeyConf.setApiKey(apiKey.trim());
apiKeyConf.setApiKeyHeader(evalnull( () -> props.get(CostantiDB.CONNETTORE_APIKEY_HEADER).trim()));
apiKeyConf.setAppId(evalnull( () -> props.get(CostantiDB.CONNETTORE_APIKEY_APPID).trim()));
apiKeyConf.setAppIdHeader(evalnull( () -> props.get(CostantiDB.CONNETTORE_APIKEY_APPID_HEADER).trim()));
c.setAutenticazioneApikey(apiKeyConf);
}
ConnettoreConfigurazioneHttps https = new ConnettoreConfigurazioneHttps();
https.setHostnameVerifier( props.get(CostantiDB.CONNETTORE_HTTPS_HOSTNAME_VERIFIER) != null
? Boolean.valueOf(props.get(CostantiDB.CONNETTORE_HTTPS_HOSTNAME_VERIFIER))
: null
);
https.setTipologia(
evalnull( () -> Enums.fromValue(SslTipologiaEnum.class, props.get(CostantiDB.CONNETTORE_HTTPS_SSL_TYPE)))
);
https.setTrustAllServerCerts( props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_ALL_CERTS) != null
? Boolean.valueOf(props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_ALL_CERTS))
: null
);
if(https.isTrustAllServerCerts()==null || !https.isTrustAllServerCerts()) {
ConnettoreConfigurazioneHttpsServer httpsServer = new ConnettoreConfigurazioneHttpsServer();
httpsServer.setAlgoritmo( evalnull( () ->
props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_MANAGEMENT_ALGORITM))
);
httpsServer.setTruststorePassword(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_PASSWORD))
);
httpsServer.setTruststorePath(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_LOCATION))
);
String trustStoreType = props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_TYPE);
if(trustStoreType!=null) {
if(HSMUtils.isKeystoreHSM(trustStoreType)) {
httpsServer.setTruststoreTipo(KeystoreEnum.PKCS11);
httpsServer.setPcks11Tipo(trustStoreType);
}
else {
httpsServer.setTruststoreTipo(Enums.fromValue(KeystoreEnum.class,trustStoreType));
}
}
httpsServer.setTruststoreCrl(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_CRLS))
);
httpsServer.setTruststoreOcspPolicy(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_TRUST_STORE_OCSP_POLICY))
);
if(httpsServer.getAlgoritmo()!=null || httpsServer.getTruststorePassword()!=null ||
httpsServer.getTruststorePath()!=null || httpsServer.getTruststoreTipo()!=null ||
httpsServer.getTruststoreCrl()!=null) {
https.setServer(httpsServer);
}
}
ConnettoreConfigurazioneHttpsClient httpsClient = new ConnettoreConfigurazioneHttpsClient();
httpsClient.setAlgoritmo(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_KEY_MANAGEMENT_ALGORITM))
);
httpsClient.setKeystorePassword(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_PASSWORD))
);
httpsClient.setKeystorePath(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_LOCATION))
);
String keyStoreType = props.get(CostantiDB.CONNETTORE_HTTPS_KEY_STORE_TYPE);
if(keyStoreType!=null) {
if(HSMUtils.isKeystoreHSM(keyStoreType)) {
httpsClient.setKeystoreTipo(KeystoreEnum.PKCS11);
httpsClient.setPcks11Tipo(keyStoreType);
}
else {
httpsClient.setKeystoreTipo(Enums.fromValue(KeystoreEnum.class,keyStoreType));
}
}
httpsClient.setKeyPassword(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_KEY_PASSWORD))
);
httpsClient.setKeyAlias(
evalnull( () -> props.get(CostantiDB.CONNETTORE_HTTPS_KEY_ALIAS))
);
if(httpsClient.getAlgoritmo()!=null ||
httpsClient.getKeystorePassword()!=null || httpsClient.getKeystorePath()!=null || httpsClient.getKeystoreTipo()!=null ||
httpsClient.getKeyPassword()!=null || httpsClient.getKeyAlias()!=null) {
https.setClient(httpsClient);
}
if ( https.getTipologia() != null ) {
c.setAutenticazioneHttps(https);
}
String proxyType = evalnull( () -> props.get(CostantiDB.CONNETTORE_PROXY_TYPE).trim() );
if ( !StringUtils.isEmpty(proxyType)) {
ConnettoreConfigurazioneProxy proxy = new ConnettoreConfigurazioneProxy();
c.setProxy(proxy);
proxy.setHostname(
evalnull( () -> props.get(CostantiDB.CONNETTORE_PROXY_HOSTNAME).trim())
);
proxy.setPassword(
evalnull( () -> props.get(CostantiDB.CONNETTORE_PROXY_PASSWORD).trim())
);
proxy.setPorta(
evalnull( () -> Integer.valueOf(props.get(CostantiDB.CONNETTORE_PROXY_PORT)))
);
proxy.setUsername(
evalnull( () -> props.get(CostantiDB.CONNETTORE_PROXY_USERNAME).trim())
);
}
ConnettoreConfigurazioneTimeout tempiRisposta = new ConnettoreConfigurazioneTimeout();
tempiRisposta.setConnectionReadTimeout(
evalnull( () -> Integer.valueOf(props.get(CostantiDB.CONNETTORE_READ_CONNECTION_TIMEOUT)))
);
tempiRisposta.setConnectionTimeout(
evalnull( () -> Integer.valueOf(props.get(CostantiDB.CONNETTORE_CONNECTION_TIMEOUT)))
);
tempiRisposta.setTempoMedioRisposta(
evalnull( () -> Integer.valueOf(props.get(CostantiDB.CONNETTORE_TEMPO_MEDIO_RISPOSTA)))
);
if ( tempiRisposta.getConnectionReadTimeout() != null || tempiRisposta.getConnectionTimeout() != null || tempiRisposta.getTempoMedioRisposta() != null) {
c.setTempiRisposta(tempiRisposta);
}
c.setTokenPolicy(
evalnull( () -> props.get(CostantiDB.CONNETTORE_TOKEN_POLICY).trim())
);
return c;
}
@Override
public String getUrlConnettore(Map<String, String> properties, String tipoConnettore) throws Exception {
return properties.get(CostantiDB.CONNETTORE_HTTP_LOCATION);
}
@Override
protected ConnettoreHttp getConnettore(OneOfConnettoreErogazioneConnettore conn) throws Exception {
return (ConnettoreHttp) conn;
}
@Override
protected ConnettoreHttp getConnettore(OneOfConnettoreFruizioneConnettore conn) throws Exception {
return (ConnettoreHttp) conn;
}
@Override
protected ConnettoreHttp getConnettore(OneOfApplicativoServerConnettore conn) throws Exception {
return (ConnettoreHttp) conn;
}
public static String getKeystoreType(ConnettoreConfigurazioneHttpsClient httpsClient) {
if(httpsClient.getKeystoreTipo()!=null) {
if(KeystoreEnum.PKCS11.equals( httpsClient.getKeystoreTipo())) {
if(httpsClient.getPcks11Tipo()==null) {
throw FaultCode.RICHIESTA_NON_VALIDA.toException("Tipo keystore pks11 non indicato");
}
return httpsClient.getPcks11Tipo();
}
else {
return httpsClient.getKeystoreTipo().toString();
}
}
return null;
}
public static String getTruststoreType(ConnettoreConfigurazioneHttpsServer httpsServer) {
if(httpsServer.getTruststoreTipo()!=null) {
if(KeystoreEnum.PKCS11.equals( httpsServer.getTruststoreTipo())) {
if(httpsServer.getPcks11Tipo()==null) {
throw FaultCode.RICHIESTA_NON_VALIDA.toException("Tipo keystore pks11 non indicato");
}
return httpsServer.getPcks11Tipo();
}
else {
return httpsServer.getTruststoreTipo().toString();
}
}
return null;
}
}