Class CompositeTenantIdResolver
java.lang.Object
io.leandev.appfuse.security.tenant.resolver.CompositeTenantIdResolver
- All Implemented Interfaces:
TenantIdResolver
組合多個 TenantIdResolver 的複合解析器
依序嘗試每個 resolver,直到其中一個返回非 null 的租戶 ID——讓同一部署可同時支援 多種認證方式(bearer token 與 Basic Auth 的租戶各在不同位置)。
使用範例:
// 預設鏈(涵蓋 bearer + Basic Auth 兩條認證路徑)
TenantIdResolver resolver = CompositeTenantIdResolver.withDefaults();
// 自組(如 IdP 的 claim 名不是 tenantId,或要加自訂認證方式)
TenantIdResolver resolver = new CompositeTenantIdResolver(
new JwtClaimTenantIdResolver("tenant_id"),
new UserDetailsTenantIdResolver()
);
-
Constructor Summary
ConstructorsConstructorDescriptionCompositeTenantIdResolver(TenantIdResolver... resolvers) 建構組合 resolverCompositeTenantIdResolver(List<TenantIdResolver> resolvers) 建構組合 resolver -
Method Summary
Modifier and TypeMethodDescriptionresolve(org.springframework.security.core.Authentication authentication) 從認證資訊中解析租戶 IDstatic CompositeTenantIdResolver建立包含預設 resolver 的組合static CompositeTenantIdResolverwithDefaults(String claimName) 建立包含預設 resolver 的組合,使用指定的 claim 名稱
-
Constructor Details
-
CompositeTenantIdResolver
建構組合 resolver- Parameters:
resolvers- 要組合的 resolver 列表,依序嘗試
-
CompositeTenantIdResolver
建構組合 resolver- Parameters:
resolvers- 要組合的 resolver 列表,依序嘗試
-
-
Method Details
-
resolve
Description copied from interface:TenantIdResolver從認證資訊中解析租戶 ID- Specified by:
resolvein interfaceTenantIdResolver- Parameters:
authentication- Spring Security 認證物件,不為 null- Returns:
- 租戶 ID,若此 resolver 無法處理則返回 null
-
withDefaults
建立包含預設 resolver 的組合
預設順序對應兩條實際存在的認證路徑:
JwtClaimTenantIdResolver— bearer token(oauth2ResourceServer().jwt(),principal 為Jwt)UserDetailsTenantIdResolver— Basic Auth(principal 為TenantAwareUserDetails)
- Returns:
- 預設配置的組合 resolver
-
withDefaults
建立包含預設 resolver 的組合,使用指定的 claim 名稱- Parameters:
claimName- JWT 中的租戶 ID claim 名稱(IdP 慣例不同時使用)- Returns:
- 使用指定 claim 名稱的組合 resolver
-