【问题标题】:Google OAuth2 Validate access token in Server FlowGoogle OAuth2 验证服务器流中的访问令牌
【发布时间】:2016-12-23 16:12:29
【问题描述】:

我正在手动编写 OAuth2 Server Flow 以允许用户使用 Google(和其他网站,但让我们专注于 Google)登录。

我有基本的流程工作:

  1. 用户点击登录链接。
  2. 转到 Google 并看到同意屏幕。
  3. 接受。
  4. 重定向回我的网站。
  5. 服务器获取相关信息并将用户登录。

到目前为止一切顺利。现在我想确保服务器下次记住用户。为此,我将令牌与其他用户数据一起存储在服务器上。

现在,我如何检查服务器到服务器的令牌是否仍然有效?我有它的到期时间,所以我知道过了这个时间它就无效了,但是我该怎么办呢?如果我只想允许登录,我应该要求一个永久(离线)令牌吗?

【问题讨论】:

    标签: php google-oauth oauth2 google-openid


    【解决方案1】:

    由于 Google 授权成功,您还应该获得 refresh_token。如果您没有得到,请执行以下操作。

    1. 当您重定向到授权端点时,添加额外的参数 access_type=offline 这将确保您将获得 refresh_token
    2. 使用刷新令牌获取额外的访问令牌。

    现在,如果您不维护状态,您可以点击 Google 的令牌验证端点进行验证。如果您正在维护状态,那么您可以在令牌仅签名的情况下验证令牌的到期时间,如果已加密,则您必须从 Google 进行验证。

    您可以使用不同的 Google OAuth URL here

    更多关于令牌验证的细节here

    【讨论】:

    • 是的,但这并没有回答我的问题:如果我只想允许登录,我是否应该要求一个永久(离线)令牌
    • 如果您不这样做,那么每次您必须将最终用户重定向到 google 进行身份验证时,唯一的区别是如果会话存在,那么它可能不会再次进行身份验证(尚未测试)和马上会给你一个令牌,但如果你不希望最终用户去谷歌,那么是的,你必须请求离线访问。
    猜你喜欢
    • 2015-10-23
    • 2023-02-22
    • 1970-01-01
    • 2016-02-03
    • 2020-06-30
    • 2018-02-23
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多