登录令牌无效。在访问AWS Cognito AssumeRoleWithWebIdentity时缺少必需的声明:aud

时间:2018-04-03 06:37:36

标签: amazon-web-services amazon-cognito aws-cognito

我已经在Cognito中设置了用户池,并在通过cognito js sdk对创建的用户进行身份验证后获得了JWT令牌。当我尝试调用assumeRoleWithWebIdentity api时会返回错误,下面是示例api调用。

https://sts.amazonaws.com/
?Action=AssumeRoleWithWebIdentity
&DurationSeconds=3600
&RoleSessionName=app1
&RoleArn=arn:aws:iam::id:role/_cross_account_role
&WebIdentityToken=jwtAccessToken
&Version=2011-06-15

api回复,

<ErrorResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<Error>
<Type>Sender</Type>
<Code>InvalidIdentityToken</Code>
<Message>Missing a required claim: aud</Message>
</Error>
<RequestId>c01780d7-3705-11e8-80ef-533aa2d4f58f</RequestId>
</ErrorResponse>

如果我能知道这个问题的根本原因会很棒。

2 个答案:

答案 0 :(得分:3)

当用户被验证时,它会提供访问令牌和ID令牌。

enter image description here

当您尝试使用访问令牌而不是ID令牌时会出现此问题。

答案 1 :(得分:0)

为了进一步详细说明 Nirojan 的答案,这是因为在 idToken 的负载中具有 aud 字段,而其他 accessToken 在负载中没有 aud 因此Missing required声称的错误:aud