javascript - 如何在 Ionic 3 项目中配置 Amazon AssumeRoleWithWebIdentity 的访问 token ?

标签 javascript amazon-web-services ionic3 amazon-cognito

我对使用 AssumeRoleWithWebIdentity 方法有点困惑。 让我一步步描述。

第 1 步:-我从 facebook 获取 facebook token 。

第 2 步:-使用 getId 方法,我从 amzon cognito 获取 IdentityId。

第 3 步:-使用 getOpenIdToken 并传递 IdentityId,我得到 {IdentityId,Token} 作为响应。

(问题1:我可以使用此 token 访问亚马逊服务吗?)

第 4 步:- 然后我尝试实现 AssumeRoleWithWebIdentity 方法

使用参数:-

params = {
        RoleArn: arn:aws:iam::XXXXX:role/XXXXX,
        RoleSessionName: 'XXXX',
        WebIdentityToken: 'XXXX'
        DurationSeconds: 3600,
        ProviderId: 'www.amazon.com'
    };

    let sts = new AWS.STS();
    sts.assumeRoleWithWebIdentity(params, function (err, data) {
    if (err) console.log(err, err.stack);
    else console.log(data);
})

问题2:-WebIdentityToken,我必须使用facebook或cognito提供的哪一个来返回getOpenIdToken方法。

问题 3:- ProviderId,我尝试使用 facebook 登录,它是 graph.facebook.com 还是 www.amazon.com?

问题 4:当我在响应中使用 getOpenIdToken 提供的 WebIdentityToken 以及 ProviderId 作为 www.amazon.com 我收到 InvalidIdentityToken:提供的 token 不是使用 Amazon token 登录

问题 5:- 当我使用 facebook 提供的 WebIdentityTokengraph.facebook.com 提供的 ProviderId 时strong> 我收到 AccessDenied: 无权执行 sts:AssumeRoleWithWebIdentity

如果授予访问权限的方式正确,请逐步说明

最佳答案

您的最终目标似乎是为您的应用程序用户获取临时 AWS 凭证。您不需要为此与 AssumeRoleWithWebIdentity 进行交互。 Amazon Cognito 联合身份直接出售 AWS 凭证并隐藏所有 STS 交互。

authentication flow documentation 中所述,您需要与 GetId 和 GetCredentialsForIdentity API 进行交互,您的应用程序用户将直接获取临时 AWS 凭证。

关于问题 3 的回答,GetOpenIdToken 提供的 OpenId token 不能直接与 AWS API 一起使用。详细解释可以引用this answer .

关于javascript - 如何在 Ionic 3 项目中配置 Amazon AssumeRoleWithWebIdentity 的访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617397/

相关文章:

Javascript 鼠标悬停事件 Acting Squirrely

amazon-web-services - 如何在 AWS 上部署 Kubernetes?

typescript - ionic 3 中的数组推送不起作用

css - 将 scss 文件添加到 Stackblitz

android - 不允许加载本地资源 : ionic 3 android

javascript - 将 javascript 变量文件添加到 Sencha Touch 2 android 应用程序

javascript - 区分联合类型时出现错误 ("property not found in object type")

javascript - 检查 `App`的渲染方法

apache - 如何使用域地址直接访问部署在 AWS tomcat 中的 Web 应用程序?

amazon-web-services - 使用 Cloudformation SAM 的 AWS::Serverless::Api 资源策略