首页 文章

使用OAuth 2.0刷新令牌的PHP控制台应用程序,如何存储?

提问于
浏览
1

我正在开发一个利用来自少数服务的API的PHP项目 . 对于单个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

    身份验证流程很好 . 有关详细信息和验证,请阅读https://tools.ietf.org/html/rfc6749 .

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

相关问题