【问题标题】:PHP Console Application with OAuth 2.0 Refresh Tokens, how to store?带有 OAuth 2.0 刷新令牌的 PHP 控制台应用程序,如何存储?
【发布时间】:2014-08-06 12:34:18
【问题描述】:

我正在开发一个 PHP 项目,该项目利用了一些服务的 API。对于单个 API,它使用 OAuth 2.0 授权来验证应用程序的 API 访问权限。但是,我不确定应该如何处理对本地控制台应用程序进行身份验证的过程。

我不会使用 webflow 来验证 API,因为我的 PHP 脚本在本地控制台中运行。 API 允许通过输入我的用户名和密码来检索访问令牌和刷新令牌(他们建议仅对控制台应用程序这样做)。

一旦获得访问令牌,我就可以使用它来发出 API 请求。这工作正常。但是,我不确定如何处理我的刷新令牌。 API 像这样使用刷新令牌:

/oauth2/access_token/(刷新令牌使用)

上下文:客户端的 Web 服务器

必需参数:refresh_token、grant_type=refresh_token、 client_id,client_secret

访问令牌范围:无

成功后,向客户端返回 JSON 响应:

{
  "access_token": a valid access token,
  "scope": scope as given in authorize,
  "expires_in": seconds to expiry,
  "refresh_token": a token that can be used to get a new access token
}

使用刷新令牌将立即使相关访问过期 令牌。刷新令牌是一次性的。返回一个新的刷新令牌 来自此调用,可供稍后使用。

根据我从中收集到的信息,我的身份验证过程应该是这样的:

  1. 初始身份验证 - 通过环境变量传递用户名/密码,从响应中获取访问/刷新令牌
  2. 存储刷新令牌?检查初始访问令牌是否过期
  3. 如果初始访问令牌已过期,请从文件中提取刷新令牌并请求新的访问/刷新令牌
  4. 存储新的刷新令牌?

这听起来像是正确的身份验证流程吗?有没有我应该存储刷新令牌的特定方式?我知道将刷新令牌简单地存储在文本文件中可能存在很多安全问题,因为它能够完全访问我的帐户。有没有更好的选择?

谢谢!

【问题讨论】:

    标签: php authentication oauth oauth-2.0 access-token


    【解决方案1】:

    身份验证流程很好。更多细节和验证,你可以阅读https://www.rfc-editor.org/rfc/rfc6749

    您可以使用加密密钥将“刷新令牌”存储在文件或数据库中,并且必须仅使用 TLS 传输。 “刷新令牌”用于服务器确实想要一些计划的后台活动,例如基于先前存储的访问令牌从其他 oAuth 服务器访问配置文件和相关数据,而无需一遍又一遍地询问用户名和密码。如果“访问令牌”无效,则“刷新令牌”将用于获取新的“访问令牌”以达到目的。

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多