在 Spring Security 中支持多个具有不同令牌解析器的 JWT 颁发者

我按照此处的文档构建了一个 spring security oauth2 资源服务器多租户解决方案:

https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2resourceserver-multitenancy

这里:

https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2resourceserver-bearertoken-resolver

这很好用,但需要注意的是,两个发行者都使用相同的不记名令牌解析器。在我的例子中,一个发行者在 Authorization 标头上指定令牌,另一个发行者在自定义标头中发送令牌。

如何配置 spring security 为每个颁发者指定不同的 BearerTokenResolver?

我当前的代码如下,只有在两个发行者都在 X-JWT-ASSERTION 标头中提供令牌时才有效。

@Bean
BearerTokenResolver getTokenResolver()
{
    return new HeaderBearerTokenResolver("X-JWT-ASSERTION");
}
@Configuration
public class JWTSecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${oauth2.issuer-uris}")
    private String[] issuerUris;

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        var authenticationmanagerResolver = new JwtIssuerauthenticationmanagerResolver(issuerUris);

        http
        .authorizeRequests(authz -> authz
                .antMatchers("/api/**").authenticated()
                .anyRequest().permitAll())
        .oauth2ResourceServer(oauth2 -> oauth2.authenticationmanagerResolver(authenticationmanagerResolver));

    }

}
yitianshici 回答:在 Spring Security 中支持多个具有不同令牌解析器的 JWT 颁发者

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/25372.html

大家都在问