随着 cognito user pools
和 api keys
我正在尝试使用 auth0
作为 oidc
与 aws 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。
在创建授权模式时,令牌中的 iss 值与 appsync 设置中的发行人 url 匹配。
而这是使用 appsync
控制台来执行查询。
所以真的是一个简单的修复方法。
事实证明,AuthTTL和Issued At TTL值也需要存在于token中,配置才会正确,而且值需要匹配。
在我的情况下,我需要做的就是删除appync oidc设置中的这些值。
这可以在文档中找到 此处