【问题标题】:AWS Cognito PHP SDK - Unable to verify secret hash for clientAWS Cognito PHP SDK - 无法验证客户端的秘密哈希
【发布时间】:2020-12-11 17:25:55
【问题描述】:

到目前为止,我创建了用户池、应用程序客户端并标记了生成客户端密码框。 我能够注册,登录,注销。 但我无法使用 REFRESH_TOKEN_AUTH 流刷新令牌。

private function refreshConf($refreshToken, $hash)
{
    return [
        'AuthFlow' => 'REFRESH_TOKEN_AUTH',
        'ClientId' => $this->client_id,
        'UserPoolId' => $this->userpool_id,
        'AuthParameters' => [
            'REFRESH_TOKEN' => $refreshToken,
            'SECRET_HASH' => $hash
        ]
    ];
}

public function refreshToken(string $refreshToken, string $hash)
{
    try {
        $conf = $this->refreshConf($refreshToken, $hash);
        $result = $this->client->InitiateAuth($conf);
        $result = $result->toArray();
        logger($result);
        if (isset($result['AuthenticationResult'])) {
            return [
                'error' => false,
                'message' => 'SUCCESS',
                'data' => $result
            ];
        }
    } catch (\Exception $e) {
        logger(get_class($e));
        return [
            'error' => true,
            'message' => $e->getAwsErrorMessage()
        ];
    }
}

还有我生成秘密哈希的函数:

public function cognitoSecretHash($username)
{
    $hash = hash_hmac('sha256', $username . $this->client_id, $this->client_secret, true);
    return base64_encode($hash);
}

秘密哈希在注册期间存储在用户模型中,因此我可以在我想刷新令牌时发送它。但是每次Aws\CognitoIdentityProvider\Exception\CognitoIdentityProviderException 被抛出。我得到了回复Unable to verify secret hash for client d***************9。 到目前为止,我已经花了几个小时尝试谷歌解决方案。 javascript SDK似乎有问题,但没有提到PHP。我浏览了 AWS 文档,但找不到我做错了什么。我将不胜感激任何帮助。谢谢。

【问题讨论】:

  • AWS SDK for PHP 3.x 关于 InitiateAuth docs.aws.amazon.com/aws-sdk-php/v3/api/…的文档
  • 你解决了吗?我遇到了同样的问题,似乎找不到太多信息
  • 你解决了吗?
  • 您是否尝试过专门为刷新令牌调用发送客户端密码(没有散列)?这适用于我当前的项目。

标签: php laravel amazon-cognito refresh-token aws-php-sdk


【解决方案1】:

如果客户端生成了client_secret,那么你必须替换:

'SECRET_HASH' => $hash

'SECRET_HASH' => $this->client_secret

【讨论】:

    猜你喜欢
    • 2017-09-25
    • 2016-09-23
    • 2018-05-05
    • 2019-02-28
    • 2019-06-23
    • 2019-03-03
    • 2018-06-03
    • 2022-06-19
    • 2018-10-24
    相关资源
    最近更新 更多