gpt4 book ai didi

amazon-web-services - 如何在给定 AWS Cognito access_token 的情况下获取 AWSCredentials

转载 作者:行者123 更新时间:2023-12-02 01:02:27 26 4
gpt4 key购买 nike

在 Android 应用程序中,我从 http://<domain>.auth.<region>.amazoncognito.com/login 收到 JWT access_token一旦用户完成对 Cognito 用户池的身份验证。该用户池链接到 Cognito 身份池。

我应该用那个 access_token 调用什么 API 来获取 AWSCredentials目的。

我找到的最接近的是 AssumeRoleWithWebIdentity ,但那是一个 STS API,我在网上读到的一些内容似乎建议开发人员不要直接使用 STS,而是依赖 Cognito。

此外,我不希望我需要指定角色名称的 API。 Cognito 身份池已配置为为经过身份验证的用户提供特定角色。 AssumeRoleWithWebIdentity 将角色名称作为 API 的输入。因此,这看起来不对。

我看过 Cognito Identity Pool API Reference ,并且找不到接受 access_token 并返回 AWS 凭证的 API。

更新:
以下答案使用 GetCredentialsForIdentity抛出 ResourceNotFoundException说它找不到指定的IdentityId。

string access_token = ...
var jwtAccessToken = System.IdentityModel.Tokens.Jwt.JwtSecurityToken(access_token);

var client = new AmazonCognitoIdentityClient(new AnonymousAWSCredentials(),REGION);

var response = await client.GetCredentialsForIdentityAsync(new GetCredentialsForIdentityRequest
{
IdentityId=String.Format("{0}:{1}", REGION, jwtAccessToken.id),
Logins=new Dictionary<string,string>
{
{String.Format("cognito-idp.{0}.amazonaws.com/{1}", REGION, USER_POOL_ID),
access_token}
}
});

最佳答案

经过大量调查,我找到了答案。

1- 需要一个 id_token不是 access_token向 Cognito 进行身份验证,这听起来可能具有误导性。 AWS 的文档说,当您需要拥有姓名/电子邮件等用户属性时,您需要 id_token……而当您不需要该信息而只想进行身份验证时,您需要一个 access_token 是错误的,或者至少具有误导性.

2- 以下是您使用 id token 获取 AWS 凭证的方法:

var credentials = CognitoAWSCredentials(<identity pool Id>, region);
credentials.AddLogin(
"cognito-idp.<region>.amazonaws.com/<user_pool_id>",
id_token); // the raw token

请注意,您不需要 AssumeRoleWithIdentity , 或 GetCredentialsWithIdentity ,您甚至不需要 AmazonCognitoIdentityClient .

关于amazon-web-services - 如何在给定 AWS Cognito access_token 的情况下获取 AWSCredentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com