Appsync oidc 与 auth0 作为授权返回未经授权
Posted
技术标签:
【中文标题】Appsync oidc 与 auth0 作为授权返回未经授权【英文标题】:Appsync oidc with auth0 as authorisation returns unauthorised 【发布时间】:2020-09-28 13:41:16 【问题描述】:与cognito user pools
和api keys
一起,我正在尝试将auth0
用作oidc
和aws appsync
。更具体地说,我正在尝试在appsync
架构中使用多个授权指令,但在使用oidc
授权模式和@aws_oidc
指令时不断收到unauhtorised
错误消息。
对于我的默认授权模式,我使用的是cognito user pools
,但也配置了API keys
的使用。
我现在想在我的架构中使用 @aws_oidc
指令,以便来自 auth0
的用户可以对我的 API 执行操作。我在appsync
设置中配置了OIDC 授权模式,并设置了与auth0
jwt
用于授权auth0 的令牌中的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
指令时,它会返回未授权的有效令牌。
为什么会返回此消息? aws 在令牌不工作的背景下做了什么?我的令牌中是否缺少属性?
这是我的令牌。
token 中的 iss 值与创建授权模式时 appsync 设置中的 issuer url 匹配。
这是使用appsync
控制台执行查询的响应。
【问题讨论】:
【参考方案1】:真的很简单。
事实证明,AuthTTL 和 Issued At TTL 值也需要存在于令牌中才能使配置正确,并且值需要匹配。
就我而言,我需要做的就是删除 appsync oidc 设置中的这些值。
这可以在文档here 中找到
【讨论】:
以上是关于Appsync oidc 与 auth0 作为授权返回未经授权的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Graphql 架构级别检查 AWS AppSync OIDC 指令的角色或权限
oidc-client-js 针对 Auth0 的 signoutRedirect 不返回结束会话端点
使用 cognito 进行 Appsync graphql 授权