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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们如何在同一spring应用程序中同时添加JWT和基本身份验证?相关的知识,希望对你有一定的参考价值。

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

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

答案
我们不能同时做两个。我有一种情况,我必须对我的一个项目使用基本身份验证,而对另一个项目使用JWT,并且两个程序包都在具有不同端点的单个项目中。

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

另一答案
是,您的应用中可以有多个过滤器。

@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过滤。
另一答案
Spring Security还支持多种身份验证。您可以参考here

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

以上是关于我们如何在同一spring应用程序中同时添加JWT和基本身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在同一个项目中同时使用 auth0-spring-security-api 和 java-jwt?

如何在使用 Spring Boot 的 JWT 令牌时禁用同一用户帐户的多个登录

如何在 Spring 中使用 OAuth2 和 JWT 令牌代表特定用户调用受保护的资源?

如何使用 Webflux 在 Spring API 处理程序方法中访问 JWT 声明?

如何通过 MDC 将从 JWT 获取的用户 ID 添加到后端日志?

Spring Social Login:如何添加同一个社交提供商(例如 Facebook)的多个应用程序?