java如何在spring boot中设计两种独立的授权/身份验证配置?
我想用这种设计为spring boot应用程序实现身份验证和授权:
第一组端点(“/api/**”)将通过请求头传递api密钥来获得授权。所有端点都应允许身份验证
第二个组(/admin/**)将通过点击/login端点来进行身份验证,该端点传递用户名和密码,我将在其中使用自定义UserDetailService。如果身份验证良好,将返回令牌并用于授权其他端点
我想实施:
- 两个Web安全配置
- 两个过滤器
我经常失败,我认为问题在于我对问题的理解。 下面是已经实现了代码的initial问题,但我希望有人提出不同的方法
# 1 楼答案
我认为一个更简单的解决方案可能是首先匹配路径前缀(使用ant/path模式),然后为该路径定义一个认证标准
这与通常的示例非常相似(参见示例用法https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/builders/HttpSecurity.html)
api端点的所有用户的“api密钥”是否相同?如果是这样,您可以创建一个共享的“用户”来满足这个需求(spring默认情况下就是这么做的),尽管这通常是不安全的。如果没有,那么验证“api密钥”的标准是什么
您不应该需要多个筛选链来检查这些条件(请参阅筛选链文档https://docs.spring.io/spring-security/reference/servlet/architecture.html)