веб-сервисы Amazon — аутентификация разработчика в php-ошибке

Я разработчик, пытающийся подключиться к серверу на PHP. Вот мой код для аутентификации разработчика сервера:

    <?php
require 'aws.phar';

use Aws\CognitoIdentity\CognitoIdentityClient;
use Aws\Sts\StsClient;
use Aws\Credentials\Credentials;
use Aws\S3\S3Client;

$identityClient = CognitoIdentityClient::factory(array(
'version' => 'latest',

'region'  => 'ap-northeast-1'
));

$idResp = $identityClient->getId(array(
'AccountId' => 'XXXXXXXXXXX',
'IdentityPoolId' => 'XXXXXXXXXXXXXX',
'Logins' => array(
'cognito-identity.amazonaws.com:amr' => 'login.blupinch.app'
)
));

$identityId = $idResp["IdentityId"];
$tokenResp = $identityClient->getOpenIdToken(array(
'IdentityId' => $identityId,
'Logins' => array(
'cognito-identity.amazonaws.com:amr' => 'login.blupinch.app'
)
));

$token = $tokenResp["Token"];$stsClient = StsClient::factory(array(
'region'  => 'us-east-1',
'version' => '2011-06-15'
));
$stsResp = $stsClient->assumeRoleWithWebIdentity(array(
'RoleArn' =>'arn:aws:iam::XXXXXXXXXX:role/Cognito_appAuth_Role',
'RoleSessionName' => 'App', // you need to give the session a name
'WebIdentityToken' => $token
));$credentials = new Credentials(
$stsResp['Credentials']['AccessKeyId'],
$stsResp['Credentials']['SecretAccessKey'],
$stsResp['Credentials']['SessionToken']
);

$s3Client = new S3Client([
'version' => '2006-03-01',
'region'  => 'us-east-1',
'credentials' => $credentials
]);

Код довольно сложный, как и следующее сообщение об ошибке, которое я получаю. У меня проблемы с пониманием этого:

PHP Fatal error:  Uncaught exception
'Aws\CognitoIdentity\Exception\CognitoIdentityException' with message
'Error executing "GetId" on "https://cognito-identity.ap-northeast-
1.amazonaws.com"; AWS HTTP error:
Client error:
`POST https://cognito-   identity.ap-  northeast-1.amazonaws.com` resulted
in a `400 Bad Request` response:
{"__type":"ValidationException","message":
"1 validation error detected:
Value '{cognito-identity.amazonaws.com:amr=login (truncated...)
ValidationException (client):
1 validation error detected:
Value '{cognito-identity.amazonaws.com:amr=login.blupinch.app}' at 'logins'
failed to satisfy constraint:
Map keys must satisfy constraint:
[Member    must have length less than or equal to 128, Member must have
length    greater than or equal to 1, Member must satisfy regular expression
pattern: [\w._/-]+] - {"__type":
"ValidationException","message":
"1     validation error detected:
Value '{cognito-    identity.amazonaws.com:amr=login.blupinch.app}' at
'logins' failed to    satisfy constraint:
Map keys must satisfy constraint:
[Mem in    phar:///home/ubuntu/aws.phar/Aws/WrappedHttpHandler.php on

Я считаю, что ошибка связана со значением ключа cognito-identity.amazonaws.com:amr, Поэтому мне интересно, что я должен установить значение для этого ключа?

0

Решение

Таким образом, внутреннему серверу не нужно вызывать API GetId или GetOpenIdToken. С вашего сервера вам нужно позвонить GetOpenIdTokenForDeveloperIdentity API Amazon Cognito. Для карты входа в систему ключом должно быть имя поставщика разработчика, которое вы указали в консоли Amazon Cognito для этого пула идентификаторов, значение должно быть уникальным идентификатором пользователя, который прошел аутентификацию на вашем сервере из собственного приложения. Cognito возвращает идентификационный идентификатор, связанный с этим именем пользователя и токеном OpenId Connect, в ваш бэкэнд, и он должен быть передан обратно в приложение.

Я очень рекомендую вам следовать нашим Сообщение блога и руководство разработчика, это объясняет этот поток в глубину. Как всегда, если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать.

Благодарю.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]