刷新令牌唯一

时间:2015-03-24 12:52:39

标签: oauth-2.0

晚上好:

我正在实施两条腿OAuth 2.0,我想知道如何生成一个"随机"和唯一的refresh_token。

用户将发送一个refresh_token,此令牌将在数据库中查找以获取与此令牌相关的用户。如何生成令牌以防止数据库中的冲突?

提前致谢

1 个答案:

答案 0 :(得分:1)

ThePHPLeague OAuth2库使用辅助类生成随机密钥。

如果您使用的是PHP,请查看:openssl_random_pseudo_bytes()

https://github.com/thephpleague/oauth2-server/blob/master/src/Util/SecureKey.php

具体做法是:

class DefaultAlgorithm implements KeyAlgorithmInterface
{

    public function generate($len = 40)
    {
        $stripped = '';
        do {
            $bytes = openssl_random_pseudo_bytes($len, $strong);
            // We want to stop execution if the key fails because, well, that is bad.
            if ($bytes === false || $strong === false) {

                throw new \Exception('Error Generating Key');

            }
            $stripped .= str_replace(['/', '+', '='], '', base64_encode($bytes));
        } while (strlen($stripped) < $len);
        return substr($stripped, 0, $len);
    }
}