除了cognito user pools
和api keys
,我还在尝试使用auth0
作为aws appsync
的oidc
。更具体地说,我正在尝试使用appsync
模式中的多重授权指令,但在使用oidc
授权模式和@aws_oidc
指令时一直收到unauhtorised
错误消息。
对于我的默认授权模式,我使用的是cognito user pools
,但也配置了API keys
的使用。
现在,我希望在我的模式中使用API指令,以便来自auth0
的用户可以对我的@aws_oidc
执行操作。我已经在appsync
设置中配置了OIDC授权模式,并将与用于针对auth0授权的auth0
jwt
令牌中的iss
值相同的值设置为颁发者URL值。
我已经检查了该令牌是一个RS256 token
,而且它也是一个有效的令牌,如果我使用它向auth0
上的/userinfo
发送curl请求,我就可以检索用户的属性。
我的模式中有以下变化,我使用它来创建项目。
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
指令时,它返回unauthorised valid token。
为什么它会返回这条消息?令牌不起作用的情况下,aws在后台做了什么?我的令牌中是否缺少某些属性?
这是我的代币。
当创建授权模式时,令牌中的ISS值与appsync设置中的发行者url匹配。
这是使用appsync
控制台执行查询的响应。
发布于 2020-06-09 20:54:10
所以实际上是一个简单的解决方法。
事实证明,为了使配置正确,令牌中还需要存在AuthTTL和Issued At TTL值,并且这些值需要匹配。
在我的例子中,我所需要做的就是删除appsync oidc设置中的那些值。
这可以在docs here中找到
https://stackoverflow.com/questions/62281582
复制相似问题