Appsync oidc with auth0 as authorisation Returns unauthorised

问题描述 投票:0回答:1

随着 cognito user poolsapi keys 我正在尝试使用 auth0 作为 oidcaws appsync. 更具体地说,我正试图使用在 "我 "中的多重授权指令。appsync 模式,但一直得到 unauhtorised 的错误信息,当使用 oidc 授权模式和 @aws_oidc 指令。

对于我的默认授权模式,我使用的是 cognito user pools,但也配置了使用 API keys.

我现在想使用 @aws_oidc 指令,这样一来,来自于 auth0 可以对我的API执行操作。我已经在 appsync 设置一个OIDC授权模式,并将发行人的URL设置为与之相同的值。iss 价值从 auth0 jwt 令牌用于对 auth0 进行授权。

我已经检查了该标记是一个 RS256 token 而这也是一个有效的令牌,如果我用它来发送一个curl请求到 /userinfo 关于 auth0 我可以检索用户的属性。

在我的模式中,我有以下的突变,我用它来创建项目。

type Mutation @aws_oicd @aws_iam
@aws_cognito_user_pools {
    createItem(input: CreateItemInput!): Item
    auth0CreateItem(bearerToken: String!, input: CreateItemInput!): Item @aws_oicd

如果设置并使用 @aws_apikey 指令,以及与 @aws_cognito_user_pools 指令,我就可以创建一个项目了。

然而,当我添加 @aws_oidc 指令,对于有效的token,它返回unauthorised。

为什么会返回这个消息?aws在后台做了什么,导致token无法工作?我的token中是否缺少了一些属性?

这是我的token。

enter image description here

在创建授权模式时,令牌中的 iss 值与 appsync 设置中的发行人 url 匹配。

enter image description here

而这是使用 appsync 控制台来执行查询。

enter image description here

openid-connect auth0 aws-appsync
1个回答
0
投票

所以真的是一个简单的修复方法。

事实证明,AuthTTL和Issued At TTL值也需要存在于token中,配置才会正确,而且值需要匹配。

在我的情况下,我需要做的就是删除appync oidc设置中的这些值。

这可以在文档中找到 此处

© www.soinside.com 2019 - 2024. All rights reserved.