所以我想创建一个游戏,但是我不想在我的服务器上存储用户敏感数据(由于新法律等)。因此,我认为Cognito可能效果很好。我阅读了本文的可能设置https://aws.amazon.com/blogs/gametech/how-to-set-up-player-authentication-with-amazon-cognito/。因此,我尝试在客户端从cognito提取令牌的过程中设置身份验证,然后服务器将允许用户调用某些可以验证令牌的功能。
让我感到困惑的是,他们提供的c ++代码示例中,他们通过调用getUserRequest.SetAccessToken(accessToken);来验证客户端是否获得了access_token;设置并最终验证服务器上的令牌。好吧,在我的服务器上,我使用的是php,但我无法在sdk中找到任何设置访问令牌的方法(我在这里https://github.com/aws/aws-sdk-php/tree/master/src)。但是,在对通过cognito验证access_tokens进行了一些研究之后,我发现了本文https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html。本文指出访问令牌只是JWT,您可以使用第三方JWT库进行验证。所以我有点困惑...我应该在aws sdk中找到一个验证服务器上访问令牌的函数,还是应该自己验证JWT?在c ++示例中,服务器还设置了一个cognito客户端,这是为了确保令牌过期时是否需要刷新令牌?
感谢您的帮助。
答案 0 :(得分:1)
您可以在Amazon PHP SDK中使用getUser
方法
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html
示例:
$client = new CognitoIdentityProviderClient([
'version' => '2016-04-18',
'region' => '<aws region>',
]);
try {
$user = $client->getUser([
'AccessToken' => '<access_token>',
]);
} catch (\Aws\CognitoIdentityProvider\Exception\CognitoIdentityProviderException $e) {
var_dump($e);
}