如何在Ionic 3项目中为访问令牌配置Amazon AssuumeRoleWithWebIdentity



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

步骤1:-我从脸书获得脸书代币。

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

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

(问题1:我可以使用这个代币访问亚马逊服务吗?)

第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:当我使用WebIdentityToken(由getOpenIdToken提供)作为响应,ProviderId作为www.amazon.com时,我得到InvalidIdentityToken提供的令牌不是使用亚马逊令牌登录

问题5:-当我使用facebook提供的WebIdentityTokenProviderId作为graphic.facebook.com时,我被拒绝访问:未被授权执行sts:AsseumeRoleWithWebIdentity

如果如何授予访问权限是正确的,请逐步告知

您的最终目标似乎是为应用程序用户获得临时AWS凭据。为此,您不需要与AssuumeRoleWithWebIdentity交互。Amazon Cognito Federated Identities直接出售AWS凭据并隐藏所有STS交互。

正如身份验证流程文档中所解释的,您需要与GetId和GetCredentialsForIdentity API进行交互,您的应用程序用户将直接获得临时AWS凭据。

至于问题3的答案,不,GetOpenIdToken提供的OpenId代币不能直接与AWS API一起使用。关于详细的解释,你可以参考这个答案。

最新更新