Я уже больше суток пытаюсь заставить Cognito работать.
Наш сценарий, который я хочу запустить, - это «Аутентификация с помощью стороннего поставщика и доступ к сервисам AWS с помощью пула идентификации» на https://docs.amazonaws.cn/en_us/cognito/latest/developerguide/cognito-scenarios.html
В настоящее время я генерирую учетные данные с помощью AWS.EnvironmentCredentials
, создаю новый CognitoIdentity
и использую его для вызова getOpenIdTokenForDeveloperIdentity
в нашем сервере.
AWS.config.credentials = new AWS.EnvironmentCredentials(...);
AWS.config.update({region: 'cn-north-1'});
const cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'});
const params = {
IdentityPoolId: 'cn-north-1:XXXXXX',
Logins: {
'<DeveloperProviderName>': identifierStr,
},
};
Это работает нормально, и я могу получить необходимые token
и identityId
, которые я возвращаю на свой интерфейс. Там я обмениваю token
и identityId
на учетные данные.
AWS.config.region = 'cn-north-1';
const cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'});
const params = {
IdentityId: identityId,
Logins: {
'cognito-identity.cn-north-1.amazonaws.com.cn': token, //using the key for cn-north-1
}
};
cognitoidentity.getCredentialsForIdentity(params, (err, data) => {
if (err){
//handle error
} else {
//get credentials
//using AccessKeyId and SecretKey and SessionToken to use AWS services
}
});
Вот вылезу ошибку InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
Почему я получаю эту ошибку? И как мне решить эту проблему?
Я думал, что мне может потребоваться изменить конфигурацию учетных данных для бэкэнда, как предлагает пример кода в пуле идентификаторов, но это дает ошибку Missing credentials in config
на сервере.
// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'cn-north-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'cn-north-1:XXXXXXX',
});
изменить: после некоторого исследования я добавил SessionToken
в конфигурации (дополнительно к AccessKey и SecretKey), но теперь получаю новую ошибку AccessDenied
. Я проверил свои конфигурации ролей и тем не менее назначил правильные права своей аутентифицированной роли.