【问题标题】:Android and AWS Cognito Developer Authenticated IdentitiesAndroid 和 AWS Cognito 开发人员经过身份验证的身份
【发布时间】:2016-06-29 21:02:09
【问题描述】:

我正在构建一个使用 Cognito 进行用户身份验证的 Android 应用。我正在使用 Developer Authenticated Identities 并成功从我的后端服务检索身份 ID 和令牌,但是我无法弄清楚如何使用 S3 的身份 ID 和令牌。我已经在 J​​avaScript 中成功地做到了这一点......

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

但这也不成功。有人可以指出我正确的方向吗?

提前致谢。

【问题讨论】:

标签: android amazon-web-services amazon-s3 amazon-cognito


【解决方案1】:

我使用 Node.js 进行了此操作,但我假设 Android SDK 具有类似的 API。创建身份(使用或不使用 Oauth 提供者)后,您将获得 IdentityId,然后为该身份请求请求 IAM 临时凭证。您将拥有一个 accessKey、secretKey 和一个令牌,使用它们来配置 AWS.config。

之后,您可以使用 AWS SDK 中的任何服务,但您需要确保您的身份池附加了正确的角色/策略。

注意:提供最少且唯一需要的访问权限,否则您将暴露您的服务以供恶意使用!

token有过期日期,可以设置,我没检查AWS Cognito是否自动刷新。

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2015-05-10
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2015-10-04
    • 2015-04-15
    • 2016-03-12
    • 2015-10-12
    相关资源
    最近更新 更多