我正在开发一个利用来自少数服务的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
}
使用刷新令牌会立即使相关访问失效 令牌。刷新令牌是一次性使用。返回新的刷新令牌 来自这个电话,准备好以后再消费。
从我收集的内容来看,我的身份验证过程应该是这样的:
这听起来像是正确的身份验证流程吗?我应该存储刷新令牌的具体方法吗?我知道简单地将刷新令牌存储在文本文件中可能存在很多安全问题,因为它能够提供对我的帐户的完全访问权限。还有更好的选择吗?
谢谢!
答案 0 :(得分:2)
身份验证流程很好。有关详细信息和验证,请阅读https://tools.ietf.org/html/rfc6749。
您可以使用加密密钥在文件或数据库中存储“刷新令牌”,并且必须仅使用TLS传输。 “刷新令牌”用于senerios,其中服务器确实想要某些预定的后台活动,例如基于先前存储的访问令牌从其他oAuth服务器访问配置文件和相关数据,而不是一次又一次地再次询问用户名和密码。如果“访问令牌”无效,则“刷新令牌”将用于获取新的“访问令牌”以达到目的。