Spring OAuth2 - 授权服务器如何处理客户端的两个实例的安全上下文?
Spring OAuth2 - How does the authorization server handle the Security Context with two instances of a client?
我目前正在研究 OAuth2 Spring 客户端(A 和 B)的两个实例联系同一个 AuthorizationServer(C)。当在 Chrome 上使用两个 windows 时,一个正常,一个在隐身模式下,这工作正常。
A和B都联系了C,我可以用两个不同的账户登录,并且用户端点 returns 是给定用户的正确主体。
但是,如果我在同一浏览器 window 中从 A 切换客户端,并在 B 上调用登录路径],没有提示登录屏幕,我立即以 A 的 window 中的同一用户身份登录,在 B.
我检查过这是否是由于 cookie 造成的,但似乎并非如此。我无法理解不与 A 通信的 B 如何知道发送正确的令牌并从 [=21= 检索安全数据]C 连接到 A。我在隐身模式和正常模式下都试过了,两次都返回了另一个主体。
总而言之,我的问题是:B 如何发送连接到 A 和 的登录进程的数据C 在同一浏览器会话中反之亦然?
However, if I switch the client in the same browser window from A, and
call the login path on B, the login screen is not prompted, and I am
instantly logged in as the same user that was in the window for A, on
B.
坦率地说,这是因为 access_token 生成的和您登录时的客户端凭据(用于识别客户端,在您区分登录请求是来自 A 还是 B)之间没有任何关系。仅在生成 access_token.
时才重要
在用户 X 通过网站请求 OAuth2 Bearer access_token 和 Iphone 的简单情况下,将生成 2 个唯一的 access_token 并保留在服务器后端。
如果用户 X 以某种方式获取网站中生成的 access_token 并在页眉中使用它
Authorization: Bearer <Website Generated access_token>
在调用受保护端点时,用户 X 不会返回 401 或 403,因为发送的 access_token 实际上在后端服务器中可用。仅验证 access_token 是否仍然有效(将执行未过期)。
我目前正在研究 OAuth2 Spring 客户端(A 和 B)的两个实例联系同一个 AuthorizationServer(C)。当在 Chrome 上使用两个 windows 时,一个正常,一个在隐身模式下,这工作正常。
A和B都联系了C,我可以用两个不同的账户登录,并且用户端点 returns 是给定用户的正确主体。
但是,如果我在同一浏览器 window 中从 A 切换客户端,并在 B 上调用登录路径],没有提示登录屏幕,我立即以 A 的 window 中的同一用户身份登录,在 B.
我检查过这是否是由于 cookie 造成的,但似乎并非如此。我无法理解不与 A 通信的 B 如何知道发送正确的令牌并从 [=21= 检索安全数据]C 连接到 A。我在隐身模式和正常模式下都试过了,两次都返回了另一个主体。
总而言之,我的问题是:B 如何发送连接到 A 和 的登录进程的数据C 在同一浏览器会话中反之亦然?
However, if I switch the client in the same browser window from A, and call the login path on B, the login screen is not prompted, and I am instantly logged in as the same user that was in the window for A, on B.
坦率地说,这是因为 access_token 生成的和您登录时的客户端凭据(用于识别客户端,在您区分登录请求是来自 A 还是 B)之间没有任何关系。仅在生成 access_token.
时才重要在用户 X 通过网站请求 OAuth2 Bearer access_token 和 Iphone 的简单情况下,将生成 2 个唯一的 access_token 并保留在服务器后端。
如果用户 X 以某种方式获取网站中生成的 access_token 并在页眉中使用它
Authorization: Bearer <Website Generated access_token>
在调用受保护端点时,用户 X 不会返回 401 或 403,因为发送的 access_token 实际上在后端服务器中可用。仅验证 access_token 是否仍然有效(将执行未过期)。