我有一个新的 ASP.Net Core 3 MVC 站点,已将 GraphQL 添加到HotChocolate中。我有用户使用基于 cookie 的身份验证和 Auth0 登录到 MVC 端:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("Auth0", options =>
{
...
});
但是对于 GraphQL 请求,我需要 JWT 身份验证,我会使用:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(config =>
{
...
});
他们都独立工作正常。Cookie auth 允许控制器使用;JWT auth 允许使用 GQL。但我不知道如何获取控制器的 cookie 身份验证和/graphql
路由的 JWT。
一点上下文:HotChocolate 使用自定义中间件来处理进入/graphql
路由的请求。它不在控制器上,所以我不能只用Authorize
属性指定方案,因为没有控制器可以把它放在上面。
类似问题
- 在 ASP.NET Core 中结合 cookie 和令牌身份验证 - 此处的答案(“使用框架”)含糊不清且毫无帮助。
- 配置不同的授权/身份验证方案- 这是 .Net Core 1.1,而不是 3.1。API 发生了很大变化。试图调整它,但运行时错误说
DefaultSignInScheme
是必需的。
(还有一些其他的,主要专注于结合 REST 和 MVC,但它们都用于控制器,所以场景有点不同。)