我们如何在同一个 spring 应用程序中同时添加 JWT 和基本身份验证?

How can we add JWT and basic authentication simultaneously in same spring application?

我有一个要求,所有调用都使用 JWT/Filters 进行身份验证,但现在我希望所有具有 /retextternal/ 的调用都应该绕过 jwt 身份验证并且应该使用基本身份验证。是否有可能有 2 个网络安全配置器或其他东西?我们如何才能做到这一点?

我可以从 JWT 身份验证中排除特定的 url,但我如何才能要求 spring 进行基本身份验证? TIA

Spring 安全也支持多重认证。可以参考here

不同的API地址可以参考这个进行不同的认证:

是的,您的应用程序中可以有多个过滤器。

 @SpringBootApplication
 public class SpringBootJwtApplication {

 @Bean
 public FilterRegistrationBean jwtFilter() {
    final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(new JwtFilter());
    registrationBean.addUrlPatterns("/secure/*");


    registrationBean.setFilter(new BasicAuth());
    registrationBean.addUrlPatterns("/restexternal/*");
    return registrationBean;
}

public static void main(String[] args) {
    SpringApplication.run(SpringBootJwtApplication.class, args);
}

其中具有路径 secureUrls 将被 JwtFilter 过滤,restexternal 将被 BasicAuth 过滤。

我们不能同时进行。我有一个场景,我必须对我的一个项目使用基本身份验证,对另一个项目使用 JWT,并且两个包都在具有不同端点的单个项目中。

如果将两种身份验证放在一起,JWT 将始终被称为基本身份验证。