【发布时间】:2021-03-05 02:11:51
【问题描述】:
就redirect_url 而言,我不清楚 OAuth2(或至少是谷歌的实现)如何用于服务器应用程序。
我正在尝试实现三个用例:
案例一:
- 从未登录过的用户使用 google 身份管理 API 中的文档齐全的工具通过我的 Web 界面登录,该工具会生成一个令牌。
- 我的 javascript 客户端将生成的令牌连同用户名(或其他任何需要的内容)一起发送到服务器。
- 服务器使用令牌和其他信息来确保用户已通过身份验证并有权访问所请求的某些资源,例如基本登录。
案例 2:
- 用户已经通过网页登录,并且他们的令牌作为未过期的 cookie 可用,初始页面将其转发到与上述相同的令牌检查机制。
- 服务器使用令牌来验证他们的会话。
案例 3:
- 用户正在从应用程序(如 Unity 或其他一些已编译的 Qt 应用程序,甚至在命令行上)访问我的服务器,并提示输入凭据,因为在这种情况下不存在 cookie 时,不存在任何令牌.
- 如果他们的凭据不好,应用程序会这样说,并要求提供新的。
- 如果凭据良好,则会生成一个令牌,但可能不会使用,除非需要在某个时间间隔刷新令牌,因为我们假设重新运行应用程序或命令行实际上是一个新会话。
这些情况都不需要我的服务器使用redirect_url(除了令牌已过期的#2 的情况),因为:
案例 1,如果用户无法登录,他们将无法传递令牌,并且在此之前会被重定向。
情况 2,服务器接受令牌但不重定向,或拒绝令牌,然后才可以将它们重定向回情况 1 的初始状态,但服务器已经想重定向它们,因为令牌无效,所以我不需要/想要来自 oauth 的 redirect_url。
案例3,我们假设没有浏览器,无论如何都不关心redirect_url。
由于我的代码现在可以工作,使用:https://developers.google.com/identity/protocols/oauth2/web-server 总是有这个 redirect_url 字段,我不知道该怎么处理,当我执行 REST 命令时,我得到了原始 html,其中包括 self-提交 javascript 而不是有用的标头。
例如,我可以看到在我的服务器上公开一些 URL 以在身份验证期间验证来自 google 的 oauth2 会话/令牌的情况,但这将是一个验证 URL,而不是 redirect_url,因为用户/服务器没有在此过程中,不要“转到”该网址。
所以,我不知道如何处理 redirect_url,因为当我将其排除在外时,事情似乎不起作用。
【问题讨论】:
标签: google-oauth