use of org.nhindirect.common.rest.ServiceSecurityManager in project nhin-d by DirectProject.
the class DefaultRESTServiceModule method getInitiziedSecurityManager.
protected static ServiceSecurityManager getInitiziedSecurityManager(Provider<ServiceSecurityManager> securityManagerProvider) {
final ServiceSecurityManager retVal = securityManagerProvider.get();
retVal.init();
return retVal;
}
use of org.nhindirect.common.rest.ServiceSecurityManager in project nhin-d by DirectProject.
the class DefaultRESTServiceProvider method getInitiziedSecurityManager.
protected static ServiceSecurityManager getInitiziedSecurityManager(Provider<ServiceSecurityManager> securityManagerProvider) {
final ServiceSecurityManager retVal = securityManagerProvider.get();
retVal.init();
return retVal;
}
use of org.nhindirect.common.rest.ServiceSecurityManager in project nhin-d by DirectProject.
the class NHINDSecurityAndTrustMailet method getServiceSecurityManagerProvider.
/**
* Gets a custom service security manager provider. If this is null, the system will us a default provider.
* @return Gets a service security manager provider.
*/
protected Provider<ServiceSecurityManager> getServiceSecurityManagerProvider() {
Provider<ServiceSecurityManager> retVal = null;
String providerClazz = GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.SERVICE_SECURITY_MANAGER_PROVIDER, this, "");
if (providerClazz != null && !providerClazz.isEmpty()) {
try {
// create an instance of the provider
@SuppressWarnings("unchecked") Class<Provider<ServiceSecurityManager>> clazz = (Class<Provider<ServiceSecurityManager>>) getClass().getClassLoader().loadClass(providerClazz);
retVal = clazz.newInstance();
} catch (Exception e) {
LOGGER.warn("Failed to load service security manager provider class " + providerClazz + ": " + e.getMessage(), e);
retVal = new OpenServiceSecurityManagerProvider();
}
} else {
retVal = new OpenServiceSecurityManagerProvider();
}
if (retVal instanceof MailetAwareProvider)
((MailetAwareProvider) retVal).setMailet(this);
return retVal;
}
use of org.nhindirect.common.rest.ServiceSecurityManager in project nhin-d by DirectProject.
the class NHINDSecurityAndTrustMailet method init.
/**
* {@inheritDoc}
*/
@Override
public void init() throws MessagingException {
LOGGER.info("Initializing NHINDSecurityAndTrustMailet");
super.init();
// set the outbound policy for notifications if possible
try {
final boolean useOutboundPolicy = Boolean.parseBoolean(GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.USE_OUTGOING_POLICY_FOR_INCOMING_NOTIFICATIONS, this, "false"));
// we don't know if this parameter came from the mailet config or the options manager, so just go ahead and set it at
// the options manager level because that it where the agent reads the value... no danger that we will overwrite the value that we want...
// we would just be writing the same value if the information came from the options manager module
// the mailet parameter gets precedence, so we want to overwrite the options manager if the value exists in the mailet configuration
OptionsManager.getInstance().setOptionsParameter(new OptionsParameter(OptionsParameter.USE_OUTGOING_POLICY_FOR_INCOMING_NOTIFICATIONS, Boolean.toString(useOutboundPolicy)));
} catch (Exception e) {
// log a warning that the parameter could not be set
}
// set the rejection policy for tampered routing headers
try {
final boolean rejectOnTamperPolicy = Boolean.parseBoolean(GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.REJECT_ON_ROUTING_TAMPER, this, "false"));
OptionsManager.getInstance().setOptionsParameter(new OptionsParameter(OptionsParameter.REJECT_ON_ROUTING_TAMPER, Boolean.toString(rejectOnTamperPolicy)));
} catch (Exception e) {
// log a warning that the parameter could not be set
}
// set the JCE providers if available
final String JCEName = GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.JCE_PROVIDER_NAME, this, "");
if (!StringUtils.isEmpty(JCEName))
OptionsManager.getInstance().setOptionsParameter(new OptionsParameter(OptionsParameter.JCE_PROVIDER, JCEName));
final String sensitiveJCEName = GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.JCE_SENTITIVE_PROVIDER, this, "");
if (!StringUtils.isEmpty(sensitiveJCEName))
OptionsManager.getInstance().setOptionsParameter(new OptionsParameter(OptionsParameter.JCE_SENTITIVE_PROVIDER, sensitiveJCEName));
// Get the configuration URL
final String configURLParam = getInitParameter(SecurityAndTrustMailetOptions.CONFIG_URL_PARAM);
if (StringUtils.isEmpty(configURLParam)) {
LOGGER.error("NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null.");
throw new MessagingException("NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null.");
}
// parse into a URL and validate it is properly formed
URL configURL = null;
try {
configURL = new URL(configURLParam);
} catch (MalformedURLException ex) {
LOGGER.error("Invalid configuration URL:" + ex.getMessage(), ex);
throw new MessagingException("NHINDSecurityAndTrustMailet Configuration URL cannot be empty or null.", ex);
}
final Collection<Module> modules = getInitModules();
Provider<SmtpAgentConfig> configProvider;
try {
configProvider = this.getConfigProvider();
if (configProvider == null)
configProvider = createCompatConfigProvider(configURL);
if (configProvider instanceof URLAccessedConfigProvider)
((URLAccessedConfigProvider) configProvider).setConfigURL(configURL);
final Provider<ServiceSecurityManager> srvSecMgr = getServiceSecurityManagerProvider();
if (configProvider instanceof SecureURLAccessedConfigProvider)
((SecureURLAccessedConfigProvider) configProvider).setServiceSecurityManager(srvSecMgr);
final Provider<KeyStoreProtectionManager> keyStoreManagerProvider = getKeyStoreManagerProvider();
if (configProvider instanceof KeyStoreProtectionConfigProvider && keyStoreManagerProvider != null)
((KeyStoreProtectionConfigProvider) configProvider).setKeyStoreProtectionManger(keyStoreManagerProvider);
agent = SmtpAgentFactory.createAgent(configURL, configProvider, null, modules);
} catch (SmtpAgentException e) {
LOGGER.error("Failed to create the SMTP agent: " + e.getMessage(), e);
throw new MessagingException("Failed to create the SMTP agent: " + e.getMessage(), e);
}
///CLOVER:OFF
if (agent == null) {
LOGGER.error("Failed to create the SMTP agent. Reason unknown.");
throw new MessagingException("Failed to create the SMTP agent. Reason unknown.");
}
///CLOVER:ON
// get the DSN creation options
// default is RELIABLE_DSN_OPTION
final String dnsCreateOptions = GatewayConfiguration.getConfigurationParam(SecurityAndTrustMailetOptions.AUTO_DSN_FAILURE_CREATION_PARAM, this, RELIABLE_DSN_OPTION);
for (String dsnOption : dnsCreateOptions.split(",")) {
if (dsnOption.equalsIgnoreCase(RELIABLE_DSN_OPTION))
autoDSNForTimelyAndReliable = true;
else if (dsnOption.equalsIgnoreCase(GENERAL_DSN_OPTION))
autoDSNForGeneral = true;
}
// set the agent and config in the Gateway state
final GatewayState gwState = GatewayState.getInstance();
if (gwState.isAgentSettingManagerRunning())
gwState.stopAgentSettingsManager();
gwState.setSmtpAgent(agent);
gwState.setSmptAgentConfig(SmptAgentConfigFactory.createSmtpAgentConfig(configURL, configProvider, null));
gwState.startAgentSettingsManager();
LOGGER.info("NHINDSecurityAndTrustMailet initialization complete.");
}
Aggregations