如何在oauth 2.0中重定向到“当前页面”?

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

如果我正确理解 oauth(授权码授予,暂时忽略 pcke),结构有点像这样(如 here 所解释):

客户端重定向到类似的东西:

https://authorization-server.com/auth?response_type=code
&client_id=29352735982374239857
&redirect_uri=https://example-app.com/callback
&scope=create+delete
&state=xcoivjuywkdkhvusuye3kch

然后显示一个身份验证页面并处理这个(简单的用户名+密码形式)。

用户通过身份验证后,oauth 服务器向客户端浏览器发送另一个重定向。然而这次

https://example-app.com/callback
将授权代码作为参数。到目前为止,一切都很好。然而,在阅读上面网址中的解释后,我注意到了这一点:

规范不要求 redirect_uri,但您的服务应该 需要它。此 URL 必须与开发人员的 URL 之一相匹配 创建应用时注册,以及授权服务器 如果不匹配,应该拒绝请求。

它告诉我需要注册 URL - 这对我来说意味着只能有几个“回调 url”。

这让我感到困惑,让我质疑用法:在我们的应用程序中,需要能够随时登录。如果用户在登录后返回到登录页面,那真的是令人困惑/糟糕的用户体验。 - 一个例子是用户正在订购东西并且可以在付款完成之前登录。

是在“state”变量中编码实际 url 的唯一方法吗?这看起来很麻烦而且容易出问题。 (更不用说必须进行编码功能等)。还是有其他我不知道的方法可以做到这一点?

javascript oauth-2.0 authorization
1个回答
0
投票

回调 URL 是负责从第三方 OAuth 提供者接受 OAuth 令牌、处理它,然后在用户登录后向用户呈现您想要向他们呈现的任何内容的 URL。

无论您想向他们展示什么,都可以重定向到您网站上的另一个页面。

是在“state”变量中编码实际 url 的唯一方法吗?

state 参数旨在保存一个反 CSRF 令牌。你不应该在那里编码其他数据。

存储您要重定向回其他地方的 URL,例如在服务器端会话中。

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