当前位置: 首页 > 知识库问答 >
问题:

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

闻人鸿文
2023-03-14

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

第一组endpoint("/api/**)将通过请求标头传递api密钥来获得授权。应该允许所有人进行身份验证。

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

我想实施:

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

我经常失败,我认为问题在于我对问题的态度。这里是已经实现代码的初始问题,但我希望有人提出不同的方法

共有1个答案

边国安
2023-03-14

我认为一个更简单的解决方案可能是首先匹配路径前缀(使用ant/path模式),然后为该路径定义一个认证标准。

这与通常的示例非常相似(参见示例用法https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/builders/HttpSecurity.html)。

apiendpoint的所有用户的“api密钥”是否相同?如果是这样,您可以创建一个共享的“用户”来满足此要求(这是Spring默认的做法),尽管这通常不安全。如果不是,那么验证“api密钥”的标准是什么?

您不需要多个筛选链来检查这些条件(请参阅筛选链文档https://docs.spring.io/spring-security/reference/servlet/architecture.html)。

 类似资料:
  • OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的

  • 问题内容: 我一直在努力用Spring-Security 正确实现Stomp(websocket) 身份验证 和 授权 。 为了后代,我将回答我自己的问题以提供指导。 问题 Spring WebSocket文档(用于身份验证)看起来不清楚ATM(IMHO)。而且我不明白如何正确处理 身份验证 和 授权 。 我想要的是 使用登录名/密码对用户进行身份验证。 防止匿名用户通过WebSocket连接。

  • 我一直在努力用Spring-Security正确地实现Stomp(websocket)身份验证和授权。对于后人,我将回答我自己的问题,以提供一个指导。 Spring WebSocket文档(用于身份验证)看起来不清楚ATM(IMHO)。我无法理解如何正确处理身份验证和授权。 null 在HTTP协商endpoint上进行身份验证(因为大多数JavaScript库不会随HTTP协商调用一起发送身份验

  • 我有一个已经完成的j2ee(jsf、cdi、jpa)应用程序,它完美地使用了ApacheShiro,它工作得非常好,我喜欢Shiro注释(hasRole、hasPermission等)。 现在,该项目还必须能够通过SiteMinder进行身份验证,我的问题是: 我如何设置一个领域来处理SiteMinder身份验证而不丢失Shiro授权(似乎SiteMinder会在HTTP头中给我用户名和Rolen

  • 我正在实现一个基于Spring Data REST的应用程序,我想知道是否有一种优雅的方法可以使用此框架或相关框架来实现身份验证和授权规则。 对REST服务器的所有HTTP请求都必须带有身份验证标头,我需要检查它们并根据HTTP方法和经过身份验证的用户与所请求资源的关联来决定是否授权。例如,(该应用程序是电子学习系统的REST服务器),讲师只能访问他们自己的课程部分,学生只能访问他们订阅的课程部分

  • 如何在 Hangfire 中配置持有者令牌授权/身份验证? 我有一个自定义身份验证过滤器,它读取初始请求的身份验证令牌,但它返回401的所有其他请求(Hangfire调用)。 如何将身份令牌附加到HangFire执行的每个请求的标头中? 令牌过期后如何刷新?