Spring Security OAuth2 授权服务器

问题描述 投票:0回答:2

我目前正在使用 Spring Security OAuth2 授权服务器,以便为连接到我的应用程序的用户生成 jwt。问题是默认情况下 Spring Security OAuth2 授权服务器具有以下工作流程:

  1. 访问授权端点以获取授权代码。系统将提示您输入您的凭据(用户名和密码)。然后你将被保存在安全上下文中
  2. 访问令牌端点以获取令牌。在这一刻,spring auth 服务器知道如何向您抛出一个 jwt,因为它从前一点看到了安全上下文。

问题是这对多个用户不起作用,这意味着如果另一个用户来做一个请求,它不会再次提示他输入凭据,它会在 spring security 上下文中看到以前的用户。你如何克服这种情况? Spring Authorization Server 不就是为这种场景而生的吗?

spring spring-security jwt spring-security-oauth2 spring-authorization-server
2个回答
0
投票

您正在描述一个用户“窃取”前一个用户生成的有效令牌并能够进行后续调用的场景。

为了缓解这种情况——或者至少是为了减少影响——每个代币都有一个有限的 TTL(生存时间),并在该时间后过期。

使用过期(无效)令牌调用 API 调用登录页面。


0
投票

令牌撤销需要客户端身份验证,因此在使用公共客户端时默认情况下是不可能的。最近添加了 OpenID Connect 1.0 注销端点,它专为这种情况而设计,需要 ID 令牌而不是访问令牌。此功能将在版本

1.1
.

中发布

另外,请参阅这个答案以了解令牌撤销和注销为何不同的解释(尽管请注意,自撰写此答案以来已添加了上述注销功能)。

© www.soinside.com 2019 - 2024. All rights reserved.