AWS Cognito Federated Identity Pool Пользовательский поставщик аутентификации Проблема с выходом/выходом из системы

Я использую 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() сделает это, но, видимо, нет.


person UCJava    schedule 09.07.2017    source источник


Ответы (1)


Что ж, оказывается, мне нужно было вручную очистить creds.params:

    creds.params['IdentityId'] = null;
    creds.params['Logins'] = null;

Я бы подумал, что ниже это сделает, но, видимо, нет.

creds.clearCachedId();
creds.refreshPromise();
person UCJava    schedule 10.07.2017