# 1.5. 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);
    }