Сопоставление элемента DynamoDB с объектом пула пользователей Cognito

Я занимаюсь исследованием пула пользователей Cognito, федеративных удостоверений и DynamoDB. Чтобы добиться точного контроля доступа, я должен использовать Cognito Identity Id в своей таблице DynamoDB, потому что ни на что из пользовательского пула нельзя ссылаться в IAM-политике. Стоит отметить, что ${cognito-identity.amazonaws.com:sub} относится к идентификатору личности, а не к «подпрограмме», которую мы видим в пуле пользователей Cognito.

Вопрос в том, как мне сопоставить элемент в DynamoDB с контактом пользователя?

Например, рассмотрим сценарий, если у пользователя моего приложения есть ожидающий платеж и мне нужно связаться с ним по поводу платежа. Или если пользователь сообщил о проблеме, и мне нужно найти его данные, чтобы выполнить обычную поддержку клиентов.


person user253684    schedule 22.07.2017    source источник


Ответы (1)


Поскольку вы уже можете получить данные о пользователе приложения из своей базы данных с его уникальным идентификатором удостоверения Cognito, все, что осталось, — это получить адрес электронной почты пользователя. Вы можете сделать это несколькими способами. Я буду использовать Android в качестве примера.

Вы можете проанализировать токен идентификатора JWT для атрибута электронной почты. Подробности см. в этом ответе на переполнение стека:

Проанализируйте данные полезной нагрузки маркера JWT, чтобы получить определенные значение в android/java

В качестве альтернативы вы можете сделать это следующим образом:

CognitoUserPool userPool = new CognitoUserPool(context, userPoolId, clientId, clientSecret);

CognitoUser user = userPool.getUser(userId);

GetDetailsHandler handler = new GetDetailsHandler() {
    @Override
    public void onSuccess(final CognitoUserDetails list) {
        // Successfully retrieved user details
        Map mDetails = list.getAttributes().getAttributes();
        String email = mDetails.get("email").toString(); // your user email address
        // do stuff with the email address
    }
};
user.getDetails(handler);

Из документации AWS: https://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-android-sdk.html

person Excel r 8    schedule 19.08.2018