我有一个使用 HotChocolate v13 的简单 GraphQL 实现,其中多个解析器受到 Authorize HotChocolate 实现的保护,一旦为 Azure AD 用户传递 JWT 令牌,它就可以正常工作。
现在我有一个函数,需要使用通过使用托管身份函数获得的 JWT 从 GraphQL 端点调用查询,从而产生如下所示的响应:
{
"errors": [
{
"message": "The current user is not authorized to access this resource.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"me"
],
"extensions": {
"code": "AUTH_NOT_AUTHORIZED"
}
}
]
}
相同的 GraphQL api 有其他常规控制器,但受 asp.net Core [Authorize] 属性保护,并使用托管身份 JWT 令牌调用它们可以正常工作。
为什么会发生这种情况?意味着通过托管身份方法获得的 JWT 不适用于 HotChocolate GraphQL?
要使用授权功能,您必须使用
[Authorize]
命名空间中的 HotChocolate
属性,而不是 Microsoft
命名空间中的属性。此外,您需要在架构构建器上调用 AddAuthorization
。