Итак, я хочу создать игру, но я не хочу хранить конфиденциальные данные пользователя на своем сервере (из-за новых законов... и т. д.). Так что я подумал, что cognito может сработать хорошо. Я прочитал эту статью о возможной настройке https://aws.amazon.com/blogs/gametech/how-to-set-up-player-authentication-with-amazon-cognito/. Итак, я пытаюсь настроить аутентификацию, когда клиент извлекает токены из cognito, а затем сервер разрешает пользователю вызывать определенные функции, если он может проверить этот токен.
Одна вещь, которая меня смутила, заключается в том, что в предоставленном ими образце кода на С++ они проверяли, что клиент получил access_token, вызвав getUserRequest.SetAccessToken(accessToken); для установки и окончательной проверки токена на сервере. Ну, на моем сервере я использую php, и я не могу найти ничего в sdk, чтобы установить такой токен доступа (я смотрел здесь https://github.com/aws/aws-sdk-php/дерево/мастер/src). Однако после некоторых исследований по проверке access_tokens из cognito я нашел эту статью 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. Требуется ли это для обеспечения обновления токена по истечении срока его действия?
Спасибо за любую помощь.






Вы можете использовать метод getUser в amazon PHP SDK.
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);
}
Не волнуйтесь. Дайте мне знать, если есть какие-либо проблемы.
Любые предложения по этому поводу будут отличными. Я получил токен доступа, используя размещенный пользовательский интерфейс. Затем я попытался выполнить этот код с этим токеном. Я получил это исключение, Aws\Exception\CredentialsException: ошибка при получении учетных данных из службы метаданных профиля экземпляра. (ошибка cURL 7: (см. curl.haxx.se/libcurl/c/libcurl-errors.html)) в C:\xampp\htdocs\demo_cognito_client_app\vendor\aws\aws-sdk-php\src\Credentials\InstanceProfileProvider.php:240
@RajeshKumarRaj вам необходимо указать свои учетные данные в CognitoIdentityProviderClient: 'credentials' => [ 'key' => self::$awsKey, 'secret' => self::$awsSecret, ] ключ и секрет от ваших учетных данных безопасности пользователя Amazon-> создать ключ доступа
Большое спасибо! Я все еще на работе, но когда я выйду с работы, я попробую это и посмотрю, работает ли это, чтобы я мог принять ваш ответ (я уверен, что он будет). Еще раз спасибо, вы спасатель.