有没有一种方法可以使用用户池用户并且没有AWS凭证来获取访问密钥

时间:2019-08-22 14:27:06

标签: amazon-web-services amazon-cognito

我有一个Java后端服务,我想使用AWS Cognito提供身份验证和对AWS服务的访问。该服务没有有关AWS账户的任何信息。我看到所有客户端都需要AWS凭据或管理员凭据才能创建它们。如何仅使用用户池中的用户而不了解AWS账户来授予对该服务的访问权限?

我已经尝试了客户端和服务器端,但是它们都需要AWS凭证来创建用户池和身份池客户端,然后才能获取访问令牌。

        try {
            credentials = new ProfileCredentialsProvider("default").getCredentials();
        } catch (Exception e) {
            throw new AmazonClientException(
                    "Cannot load the credentials from the credential profiles file. " +
                    "Please make sure that your credentials file is at the correct " +
                    "location (/Users/ayushaws/.aws/credentials), and is in valid format.",
                    e);
        }

        // Creating Cognito user pool client
        AWSCognitoIdentityProvider client = AWSCognitoIdentityProviderClientBuilder.standard()
                .withRegion("us-east-1")
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .build();

这是我当前创建客户的方式。我的问题是,这首先需要我的凭据才能创建客户端。如果使用的应用程序不在AWS范围内并且不了解AWS账户,我们如何创建客户端。

1 个答案:

答案 0 :(得分:0)

您需要使用具有足够特权的凭据来创建Cognito用户池和Cognito身份池。由于您正在使用Cognito,因此您应该能够在客户端应用程序中处理身份验证和访问,并且您的应用程序不需要长期的凭据,因为Identity Pool将提供必要的凭据。

在您的客户端应用程序中,用户将直接登录到Cognito用户池。成功登录用户池后,他们将收到包含IdToken的响应。然后,您将IdToken添加到凭据映射中,这将授予用户访问“身份池身份验证IAM”角色允许的资源的权限。

您可以在AWS Cognito docs中了解有关如何结合使用Cognito用户池和Cognito身份池的更多信息。