contrôle des flux d’accèss¶
Le module access-external a besoin de disposer d’une brique frontale effectuant les contrôles de sécurité pour les flux d’accès à la plateforme.
– Fournissant la terminaison TLS – Fournissant l’authentification par certificat – Un WAF applicatif permettant le filtrage d’entrée filtrant les entrées être une menace pour le système (ESAPI) – Un filtre permettant de vérifier l’existence et la cohérence du header X-Tenant-Id
protected void setFilter(ServletContextHandler context) throws VitamApplicationServerException {
if (getConfiguration().isAuthentication()) {
File shiroFile = null;
try {
shiroFile = PropertiesUtils.findFile(SHIRO_FILE);
} catch (final FileNotFoundException e) {
LOGGER.error(e.getMessage(), e);
throw new VitamApplicationServerException(e.getMessage());
}
context.setInitParameter("shiroConfigLocations", "file:" + shiroFile.getAbsolutePath());
context.addEventListener(new EnvironmentLoaderListener());
context.addFilter(ShiroFilter.class, "/*", EnumSet.of(
DispatcherType.INCLUDE, DispatcherType.REQUEST,
DispatcherType.FORWARD, DispatcherType.ERROR, DispatcherType.ASYNC));
}
// chargemenet de la liste des tenants de l'application
JsonNode node = JsonHandler.toJsonNode(getConfiguration().getTenants());
context.setInitParameter(GlobalDataRest.TENANT_LIST, JsonHandler.unprettyPrint(node));
context.addFilter(TenantFilter.class, "/*", EnumSet.of(
DispatcherType.INCLUDE, DispatcherType.REQUEST,
DispatcherType.FORWARD, DispatcherType.ERROR, DispatcherType.ASYNC));
}
protected void registerInResourceConfig(ResourceConfig resourceConfig) {
setServiceRegistry(new VitamServiceRegistry());
serviceRegistry.register(AccessInternalClientFactory.getInstance())
.register(AdminManagementClientFactory.getInstance());
resourceConfig.register(new AccessExternalResourceImpl())
.register(new LogbookExternalResourceImpl())
.register(new AdminManagementExternalResourceImpl())
.register(new AdminStatusResource(serviceRegistry))
.register(SanityCheckerCommonFilter.class)
.register(SanityDynamicFeature.class);
}