有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在spring boot中设计两种独立的授权/身份验证配置?

我想用这种设计为spring boot应用程序实现身份验证和授权:

第一组端点(“/api/**”)将通过请求头传递api密钥来获得授权。所有端点都应允许身份验证

第二个组(/admin/**)将通过点击/login端点来进行身份验证,该端点传递用户名和密码,我将在其中使用自定义UserDetailService。如果身份验证良好,将返回令牌并用于授权其他端点

我想实施:

  • 两个Web安全配置
  • 两个过滤器

我经常失败,我认为问题在于我对问题的理解。 下面是已经实现了代码的initial问题,但我希望有人提出不同的方法


共 (1) 个答案

  1. # 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