如何为AWSAssumeRoleWebIdentity设置OIDC提供程序

时间:2018-08-12 11:14:06

标签: android amazon-web-services oidc aws-iam

我正在开发一个Android应用,该应用使用firebase authentication进行登录,并使用AWS S3dynamodb来管理数据/图像。我正在尝试通过AWSAssumeRoleWebIdentity委派对AWS资源的访问。我这样做的原因是AWS Sign-In UI不允许对UI和UI流进行足够的自定义。我决定只将firebase authentication用于登录和注册。

请找到源代码和OIDC Provider设置。对于他们,错误日志为

No OpenIDConnect provider found in your account for https://securetoken.google.com/[project-name] (Service: AWSSecurityTokenService; Status Code: 400; Error Code: InvalidIdentityToken; Request ID: 37607060-9e1c-11e8-8ae0-636eae27c3bf)

已创建AWS IAM的身份提供者,其名称为“ securetoken.google.com/[my-project-name]/”,其中包含我根据[1]和OAuth 2.0客户端ID创建的指纹在Credentials的{​​{1}}中获得。

源代码如下所示。

Google Cloud Service API & Services

非常感谢。

[1] http://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html

1 个答案:

答案 0 :(得分:1)

请考虑使用Amazon Cognito联合身份(身份池)将用户从您的身份提供商联合(映射)到Amazon Cognito并获取Cognito身份ID,该ID可用于授权对AWS资源的访问。有关更多详细信息,请参见https://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html

Map<String, String> logins = new HashMap<String, String>();
logins.put("login.provider.com", token);
credentialsProvider.setLogins(logins);

现在,您可以将credentialsProvider对象与Amazon S3客户端一起使用。

AmazonS3 s3Client = new AmazonS3Client(getApplicationContext(), credentialsProvider);