无效的登录令牌。缺少必需的声明:访问 AWS Cognito AssumeRoleWithWebIdentity 时的 aud
Posted
技术标签:
【中文标题】无效的登录令牌。缺少必需的声明:访问 AWS Cognito AssumeRoleWithWebIdentity 时的 aud【英文标题】:Invalid login token. Missing a required claim: aud when accessing AWS Cognito AssumeRoleWithWebIdentity 【发布时间】:2018-09-12 09:41:33 【问题描述】:我已经在 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>
如果我能知道这个问题的根本原因,那就太好了。
【问题讨论】:
【参考方案1】:当用户通过身份验证时,它会提供访问令牌和 ID 令牌。
当您尝试使用访问令牌而不是 ID 令牌时会出现此问题。
【讨论】:
我不明白。我正在尝试访问后端 API。我们永远不应该使用 idToken 来访问 API 服务... :( auth0.com/docs/api-auth/why-use-access-tokens-to-secure-apis 我也不明白,但它也解决了我的问题(在我的环境中使用 django-cognito-jwt)【参考方案2】:为了进一步详细说明 Nirojan 的答案,这是因为在idToken
的有效负载中具有aud
字段,而accessToken
在有效负载中没有aud
,因此错误要求丢失:@ 987654325@.
【讨论】:
以上是关于无效的登录令牌。缺少必需的声明:访问 AWS Cognito AssumeRoleWithWebIdentity 时的 aud的主要内容,如果未能解决你的问题,请参考以下文章
AWS Cognito:将自定义声明/属性添加到 JWT 访问令牌
如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?
颤动中的Facebook登录错误:访问令牌错误:“code”:190,“message”:“无效的OAuth访问令牌。”],null)
如何让我的 Auth0 权限进入 AWS HTTP API Jwt 授权方的访问令牌的范围声明?