Jer*_*orn 7 authentication amazon-web-services google-openid oauth-2.0 google-plus
我正在创建一个简单的Web应用程序,它将使用Google身份验证返回OpenID令牌,然后使用javascript WebIdentityCredentials将该令牌传递给AWS.
我做了什么:
检索凭据时,我从STS收到此错误:
<ErrorResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<Error>
<Type>Sender</Type>
<Code>InvalidIdentityToken</Code>
<Message>Incorrect token audience</Message>
</Error>
<RequestId>28d09368-bf98-11e5-b52f-953b4c773ebf</RequestId>
</ErrorResponse>
Run Code Online (Sandbox Code Playgroud)
以下是AWS角色:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Federated": "accounts.google.com"},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"accounts.google.com:aud": "<my-oauth-client-id>"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
以下是我用于在AWS上下文中配置令牌的代码:
AWS.config.update({
region: 'us-east-1',
credentials: new AWS.WebIdentityCredentials({
RoleArn: 'arn:aws:iam::<my-acct>:role/lab-amp-google-idp',
WebIdentityToken : token
})
});
Run Code Online (Sandbox Code Playgroud)
这里是我通过获取凭据测试凭据的地方:
AWS.config.credentials.get(function(err) {
if (err) console.log(err);
else console.log(AWS.config.credentials);
});
Run Code Online (Sandbox Code Playgroud)
我已经使用jwt.io验证了id令牌,我可以看到它具有正确的预期字段."aud"和"azp"属性具有OAuth客户端ID.我还仔细检查了AWS角色中的Trust stansza,以确认它在条件中也具有完全相同的OAuth客户端ID.
我已经传入了其他无效的令牌并改变了RoleArn只是为了看到不同的错误,我这样做.
我在网上找不到任何描述"不正确的令牌受众"原因的内容,所以我不知道接下来要尝试什么.
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |