我们如何在同一个 Spring 应用程序中同时添加 JWT 和基本身份验证? [关闭]
Posted
技术标签:
【中文标题】我们如何在同一个 Spring 应用程序中同时添加 JWT 和基本身份验证? [关闭]【英文标题】:How can we add JWT and basic authentication simultaneously in same spring application? [closed] 【发布时间】:2020-04-11 22:02:36 【问题描述】:我有一个要求,所有调用都使用 JWT/Filters 进行身份验证,但现在我希望所有具有 /restexternal/ 的调用都应该绕过 jwt 身份验证,并且应该使用基本身份验证。是否有可能有 2 个网络安全配置器或其他东西?我们如何才能做到这一点?
我可以从 JWT 身份验证中排除特定的 url,但是我如何要求 spring 进行基本身份验证? TIA
【问题讨论】:
【参考方案1】:Spring Security 也支持多重身份验证。可以参考here
您可以参考这里为不同的 API 地址进行不同的身份验证: spring-multiple-authentication-methods-for-different-api-endpoints
【讨论】:
我不是在寻找不同类型的身份验证实现。我想合并 JWT 和基本身份验证。这与拥有多个身份验证提供者不同。 请看这个,如果这也不符合您的要求,请告诉我:***.com/questions/54706291/… 如果我提到两个带有@Order(1) 和@Order(2) 的配置器,它们都会被执行吗?并按什么顺序?意味着我必须在 @Order(1) 中提及我的基本身份验证 url,在 @Order(2) 中提及 jwt url?两者都可以吗? 是的,首先它转到@Order(1),如果需要对API 进行身份验证,它将尝试对其进行身份验证,否则传递给@Order(2)。如果@Order(1) 认证失败,它会尝试通过@Order(2) 认证。 @RoobalJindal,解决了吗?【参考方案2】:是的,您的应用中可以有多个过滤器。
@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);
其中Urls
具有路径secure
将被JwtFilter
和restexternal
过滤BasicAuth
。
【讨论】:
我们正在实现 ResourceServerConfigurerAdapter 并覆盖其 configure() 以添加 JWT 过滤器。我们如何为我们的特定 url 添加基本身份验证?有博客链接吗?【参考方案3】:我们不能同时做这两件事。我有一个场景,我必须对我的一个项目使用基本身份验证,而对另一个项目使用 JWT,并且两个包都在具有不同端点的单个项目中。
如果您将两种身份验证放在一起,JWT 将始终被称为不是基本身份验证。
【讨论】:
我也面临同样的问题。 我们可以使用 2 个授权提供者和端点来做到这一点.. : ***.com/questions/54706291/…以上是关于我们如何在同一个 Spring 应用程序中同时添加 JWT 和基本身份验证? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 安全性中同时使用数据库和 LDAP 身份验证?
Spring Social Login:如何添加同一个社交提供商(例如 Facebook)的多个应用程序?
我可以在应用程序中同时实现 SAML 和基本 spring 安全性吗?
如何在 Spring Boot 应用程序的同一个域类上同时使用 Spring Data JPA 和 Spring Data Elasticsearch 存储库?