Android и AWS Cognito Developer Authenticed Identity

Я создаю приложение для Android, которое будет использовать Cognito для аутентификации пользователей. Я использую идентификаторы, прошедшие проверку подлинности разработчика, и успешно извлекаю идентификатор удостоверения и токен из моей серверной службы, однако я не могу понять, как использовать идентификатор удостоверения и токен для S3. Я сделал это успешно в JavaScript, вот так...

AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
  IdentityId: identityid,
  Logins: {
    'cognito-identity.amazonaws.com': token
  }
});

Я пробовал с...

Map logins = new HashMap();;
logins.put("cognito-identity.amazonaws.com", token);
credentials = new CognitoCachingCredentialsProvider (
   context,
   "us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
   Regions.US_EAST_1
);
credentials.setLogins(logins);

s3 = new AmazonS3Client(credentials);
List bucket = s3.listBuckets();

но это вызывает исключение...

Неверный токен для входа. Невозможно передать токен Cognito. Я также попытался реализовать свой собственный класс поставщика удостоверений, как описано здесь...

https://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

но и это безуспешно. Может ли кто-нибудь указать мне в правильном направлении?

Заранее спасибо.


person agolia    schedule 14.03.2016    source источник
comment
Вы сравнивали своего поставщика удостоверений с поставщиком в образце приложения Cognito? Если это так, и у вас по-прежнему возникают проблемы, пример кода будет полезен при отладке вашей проблемы. github.com/awslabs/aws-sdk-android-samples/blob/master/   -  person Mark Mercurio    schedule 06.04.2016


Ответы (1)


Я сделал это с Node.js, но я предполагаю, что Android SDK имеет аналогичный API. Вы получаете IdentityId после создания удостоверения (либо с провайдером Oauth, либо без него), а затем запрашиваете временные учетные данные IAM для этого identityId. У вас будут accessKey, secretKey и токен, используйте их для настройки AWS.config.

После этого вы можете использовать любой сервис из AWS SDK, но вам нужно убедиться, что к вашему пулу удостоверений привязаны правильные роли/политики.

NB: предоставьте наименьший и единственный необходимый доступ, иначе вы подвергнете свои услуги злонамеренному использованию!

Токен имеет дату истечения срока действия, которую вы можете установить, я не проверял, обновляет ли AWS Cognito его автоматически или нет.

person e-nouri    schedule 15.03.2016