# 3.13.16. Présentation

Un filtre sur la valeur du tenant, passée dans les headers, a été ajouté pour pouvoir interdire toute requête n’indiquant pas de tenant, ou indiquant un tenant invalide.

# 3.13.17. Classe de filtre

Une classe de filtre a été ajoutée :

TenantFilter : on vérifie la présence du header X-Tenant-Id dans la requête. Ensuite, on s’assure que la valeur transmise est bien un Integer. Le contrôle est effectué, s’il est KO (tenant non valide), une réponse PRECONDITION_FAILED (code 412) sera retournée.

On vérifie ensuite la cohérence du X-Tenant-Id dans la requête, par rapport à la liste des tenants disponibles dans VITAM. Le contrôle est effectué, s’il est KO (tenant non présent dans la liste des tenants), une réponse UNAUTHORIZED (code 401) sera retournée.

# 3.13.18. Ajout du filtre

Le filtre est ajouté dans setFilter(ServletContextHandler context) de chaque serveur d’application :

    // 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));

# 3.13.19. Modules Vitam impactés

Le filtre sera appliqué pour les modules AccessExternal et IngestExternal.