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

问题描述 投票:0回答:3

我有一个要求,其中所有调用都需要通过JWT / Filters进行身份验证,但是现在我希望所有具有/ restexternal /的调用都应该绕过jwt身份验证,并且应该使用基本身份验证。是否可以有2个Web安全配置器或其他?我们如何实现这一目标?

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

java spring-boot spring-security jwt basic-authentication
3个回答
0
投票
我们不能同时做两个。我有一种情况,我必须对我的一个项目使用基本身份验证,而对另一个项目使用JWT,并且两个程序包都在具有不同端点的单个项目中。

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


0
投票
是,您的应用中可以有多个过滤器。

@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); }

具有路径Urlssecure将被JwtFilter过滤,restexternalBasicAuth过滤。

0
投票
Spring Security还支持多种身份验证。您可以参考here

您可以针对不同的API地址针对不同的身份验证参考以下内容:spring-multiple-authentication-methods-for-different-api-endpoints

© www.soinside.com 2019 - 2024. All rights reserved.