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

Nir*_*han 5 amazon-web-services amazon-cognito aws-cognito

我已经在 Cognito 中设置了用户池,并在通过 cognito js sdk 对创建的用户进行身份验证后获得了 JWT 令牌。当我尝试调用假设RoleWithWebIdentity 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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

如果我能知道这个问题的根本原因,那就太好了。

Nir*_*han 11

当用户通过身份验证时,它会提供访问令牌和 ID 令牌。

在此处输入图片说明

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

  • 我不明白。我正在尝试访问后端 API。我们永远不应该使用 idToken 来访问 API 服务...:( https://auth0.com/docs/api-auth/why-use-access-tokens-to-secure-apis (2认同)