Как проверить токен когнито getOpenIdTokenForDeveloperIdentity

Я создаю систему аутентификации, используя aws lambdas, dynamodb и cognito.

Застрял при сравнении токена, предоставленного из getOpenIdTokenForDeveloperIdentity(); позвоните с одного из серверов для конкретной личности.

Получаю токен и личность с помощью:

function getToken(email, fn) {
    var param = {
        IdentityPoolId: cognitoIdentityPoolId,
        Logins: {} // To have provider name in a variable
    };
    param.Logins[cognitoDeveloperProvidedName] = email;
    cognitoidentity.getOpenIdTokenForDeveloperIdentity(param,
        function(err, data) {
            if (err) return fn(err); // an error occurred
            else fn(null, data.IdentityId, data.Token); // successful response
        });
}

Тогда, насколько я понимаю, я могу получить уже сгенерированный токен из cognito (а не создавать новый) следующим образом:

function checkToken(IdentityId, email, fn){
    var param = {
        IdentityPoolId: cognitoIdentityPoolId,
        IdentityId: IdentityId,
        Logins: {}
    };
    param.Logins[cognitoDeveloperProvidedName] = email;
    cognitoidentity.getCredentialsForIdentity(param, 
        function(err, data) {
            if (err) return fn(err);
            else fn(null, data);
        });
}

Но я не могу заставить его работать

Любые идеи?


person csilk    schedule 06.04.2016    source источник


Ответы (1)


Разобрался, функция checkToken должна выглядеть так:

function checkToken(providedIdentity, token, fn){
    var param = {
        IdentityId: providedIdentity,
        Logins: {}
    };
    param.Logins['cognito-identity.amazonaws.com'] = token;
    cognitoidentity.getCredentialsForIdentity(param, 
        function(err, data) {
            if (err) return fn(err);
            else fn(null, data);
        });
}

Мне нужно было установить cognito-identity.amazonaws.com в качестве провайдера входа

person csilk    schedule 06.04.2016
comment
Да, как только вы получите токен cognito, провайдер теперь будет cognito-identity.amazonws.com, как вы обнаружили. - person Mark Mercurio; 06.04.2016
comment
В документах было не очень ясно, пришлось найти пример, написанный на Java, чтобы понять это, надеюсь, кто-то найдет этот пост и сэкономит 3 часа, которые я потратил на него. - person csilk; 06.04.2016
comment
Привет @MarkMercurio и Cub3. Можете ли вы уточнить, предназначена ли эта функция checkToken для проверки токена, когда он поступает от клиента? Я имею в виду, что если токен генерируется в методе API входа (с использованием getOpenIdTokenForDeveloperIdentity) и токен отправляется клиенту, то клиент вызывает другие методы с помощью этого токена, поэтому требуется проверка токена с помощью getCredentialsForIdentity. Это правильно? Должен ли я хранить идентификатор пользователя в моей базе данных? заранее спасибо - person Endymion; 10.11.2016