【发布时间】:2020-03-11 22:16:44
【问题描述】:
我也在关注这个人问storage of client credential on OAuth2 server 关于oauth2-server-php-docs 的问题。尽管它回答了客户端机密的一件事,但我想询问用户凭据。检查来自oauth2-server-php-docs的以下代码示例:
// create some users in memory
$users = array('bshaffer' => array('password' => 'brent123', 'first_name' => 'Brent', 'last_name' => 'Shaffer'));
// create a storage object
$storage = new OAuth2\Storage\Memory(array('user_credentials' => $users));
// create the grant type
$grantType = new OAuth2\GrantType\UserCredentials($storage);
// add the grant type to your OAuth server
$server->addGrantType($grantType);
它说用户凭据将存储在内存中,并且没有说明密码加密。这是我的用例——我已经将用户凭据存储在 MySQL 中,密码使用 PHP password_hash() 加密。那么如果 $user['bshaffer']['password'] 只是纯文本,我该如何匹配或使用 $storage = new OAuth2\Storage\Memory() 行?
【问题讨论】:
-
oAuth 的重点是永远不需要用户的密码。
password_hash是单向哈希,不是加密。 -
对不起,我应该使用哈希而不是加密这个词。但是我的观点是它不应该是明文。另外,如果规范中可以选择使用 UserCredentials 授权类型,您为什么说“oAuth 的全部意义在于永远不需要用户密码”?我正在开发一个前端和后端完全分离的应用程序。因此,要使我的登录方式符合我的想法,应该使用该授权类型。
-
@ceejayoz 实际上,如果您使用“用户凭据”授权类型,那么实际上,您将处理用户密码。当客户端和资源所有者之间存在高度信任时,使用此授权类型。 tools.ietf.org/html/rfc6749#section-4.3