Spring boot 如何使用具有多个资源ID的ResourceServer实现保护API?

Spring boot 如何使用具有多个资源ID的ResourceServer实现保护API?,spring-boot,spring-security,Spring Boot,Spring Security,我有一个需求,需要使用不同资源服务器获得的不同令牌来保护应用程序中的不同API集 /api/user/**->api应该使用从提供者RS1获得的令牌(T1)进行身份验证 /api/admin/**->api应该使用从提供程序RS2获得的令牌(T2)进行身份验证 T1应该不能访问/api/admin/**和 T2应该无法访问/api/user/** RS1和RS2都发布JWTs 使用Spring的资源服务器实现,这怎么可能呢?非常感谢任何指针。我想您的意思是说不同的令牌是从不同的授权服务器获得的

我有一个需求,需要使用不同资源服务器获得的不同令牌来保护应用程序中的不同API集

/api/user/**->api应该使用从提供者RS1获得的令牌(T1)进行身份验证 /api/admin/**->api应该使用从提供程序RS2获得的令牌(T2)进行身份验证

T1应该不能访问/api/admin/**和 T2应该无法访问/api/user/**

RS1和RS2都发布JWTs


使用Spring的资源服务器实现,这怎么可能呢?非常感谢任何指针。

我想您的意思是说不同的令牌是从不同的授权服务器获得的

在这种情况下,您可以查看多租户应用程序

区分租户的一种方法是发行人索赔。为此,您可以使用
JwtIssuerAuthenticationManagerResolver
JwtIssuerReactiveAuthenticationManagerResolver

@Bean
SecurityWebFilterChain-springSecurityFilterChain(ServerHttpSecurity http){
JwtIssuerReactiveAuthenticationManagerResolver身份验证ManagerResolver=
新JwtIssuerReactiveAuthenticationManagerResolver(
"https://idp.example.org/issuerOne",
"https://idp.example.org/issuerTwo");
http
.授权交换(交换->交换)
.anyExchange().authenticated()
)
.oauth2ResourceServer(oauth2->oauth2
.authenticationManagerResolver(authenticationManagerResolver)
);
返回http.build();
}
以下是帮助您入门的更多资源:

  • Spring Security中的多租户部分
  • spring security GitHub存储库中的
  • 2019年春天一号的演讲

我假设您的意思是说不同的令牌是从不同的授权服务器获得的

在这种情况下,您可以查看多租户应用程序

区分租户的一种方法是发行人索赔。为此,您可以使用
JwtIssuerAuthenticationManagerResolver
JwtIssuerReactiveAuthenticationManagerResolver

@Bean
SecurityWebFilterChain-springSecurityFilterChain(ServerHttpSecurity http){
JwtIssuerReactiveAuthenticationManagerResolver身份验证ManagerResolver=
新JwtIssuerReactiveAuthenticationManagerResolver(
"https://idp.example.org/issuerOne",
"https://idp.example.org/issuerTwo");
http
.授权交换(交换->交换)
.anyExchange().authenticated()
)
.oauth2ResourceServer(oauth2->oauth2
.authenticationManagerResolver(authenticationManagerResolver)
);
返回http.build();
}
以下是帮助您入门的更多资源:

  • Spring Security中的多租户部分
  • spring security GitHub存储库中的
  • 2019年春天一号的演讲