tenantlayer.io

Configuration reference

Every property, with its default.

Resolution

PropertyDefaultMeaning
tenantlayer.resolversHEADEROrdered list of HEADER, SUBDOMAIN, PATH, JWT. Order is precedence.
tenantlayer.headerX-Tenant-IDHeader the header resolver reads, and the header outbound calls set.
tenantlayer.base-domain(unset)Domain the subdomain resolver strips, e.g. app.com. Unset, the first host label is used.
tenantlayer.path-prefix/tPrefix the path resolver matches, e.g. /t/acme/orders.
tenantlayer.jwt-claimtenant_idToken claim the JWT resolver reads.
tenantlayer.stricttrueReject requests with no resolvable tenant. Leave it on.
tenantlayer.unscoped-paths/actuator, /errorPath prefixes served without a tenant.
tenantlayer.filter-order(derived)Servlet filter order. Derived: near-first normally, after Spring Security when resolution or membership needs an authenticated principal.

Membership verification

PropertyDefaultMeaning
tenantlayer.membership.enabledfalseVerify the principal is entitled to the resolved tenant. Off by default because enabling it without tenant claims in your tokens rejects every request.
tenantlayer.membership.claimtenantsToken claim listing the tenants the bearer may act as.

Requires Spring Security on the classpath.

Registry

PropertyDefaultMeaning
tenantlayer.registry.enabledtrueExpose a TenantRegistry backed by the application DataSource.
tenantlayer.registry.tabletenantlayer_tenantsTable the registry reads and writes. Validated as a plain SQL identifier.

Schema scanning and policy generation

PropertyDefaultMeaning
tenantlayer.schema.tenant-columntenant_idColumn that marks a table tenant-scoped.
tenantlayer.schema.includes(empty)Tables or entity names to treat as tenant-scoped regardless of columns.
tenantlayer.schema.excludes(empty)Tables or entity names never to treat as tenant-scoped.

Strategies and integrations

PropertyDefaultMeaning
tenantlayer.discriminator.enabledtrueRegister the Hibernate tenant identifier resolver that makes @TenantId work.
tenantlayer.kafka.enabledtrueRegister the Kafka producer/consumer interceptors.

Optional dependencies

Nothing below is required. Each unlocks the features next to it, and the library starts without any of them.

DependencyEnables
spring-boot-starter-security + spring-boot-starter-oauth2-resource-serverJWT resolver, membership verification
spring-kafkaKafka produce/consume propagation
spring-webfluxWebClient outbound propagation
feign-coreFeign outbound propagation
org.testcontainers:postgresqlTenantPostgres test fixture