Я использую nodejs lamdas для получения токенов аутентификации от AWS Cognito, а во внешнем коде я использую «aws-sdk»: «^ 2.74.0» javascript/typescript sdk:
var creds = new AWS.CognitoIdentityCredentials({
IdentityPoolId: environment.identityPoolId
})
AWS.config.update({
region: environment.region,
credentials: creds
});
var lambda = new AWS.Lambda();
когда я подписываю токен и идентификатор удостоверения в свой AWS.CognitoIdentityCredentials.params следующим образом:
creds.params['IdentityId'] = output.identityId;
creds.params['Logins'] = {};
creds.params['Logins']['cognito-identity.amazonaws.com'] = output.token;
creds.expired = true;
Я могу получить следующие вызовы lamda.invoke для использования аутентифицированной роли, настроенной для моего федеративного пула удостоверений. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь выйти из системы. Я прочитал много сообщений на форумах, но ни у кого нет четкого объяснения по этому поводу. Я попытался использовать следующее в моей функции выхода из внешнего интерфейса, которая не помогла:
creds.clearCachedId();
creds.refreshPromise();
любые примеры, показывающие, как javascript aws-sdk очищает информацию о сеансе/аутентификации и переключается обратно на роль пользователя без аутентификации или выходит из системы и обновляет конфигурацию, чтобы при следующем вызове службы AWS ( lambda.invoke в моем случае) роль rn вместо того, чтобы пытаться использовать аутентифицированную роль. Таким образом, кажется, что Cognito не знает о сигоуте, или я пропускаю звонок, чтобы сообщить об этом. Я надеялся, что creds.clearCachedId() сделает это, но, видимо, нет.