【问题标题】:AspNetCore 2: OpenIdConnect Cookie for web, JWT Bearer for API. Is it possible?AspNetCore 2:用于 Web 的 OpenIdConnect Cookie,用于 API 的 JWT Bearer。可能吗?
【发布时间】:2018-01-31 08:06:44
【问题描述】:

我正在开发一个 AspNetCore 2 应用程序,该应用程序在 API 旁边具有 Web 视图(以 /api 为前缀),我正在尝试使用 OpenIdConnect + cookie 对 Web 视图进行身份验证,而 /api 前缀路由使用 JWT 令牌进行身份验证(用于移动应用程序兼容性)。

到目前为止,我已经成功地使用以下代码注册和配置了 cookie、OpenIdConnect 和 JWT 中间件:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
  .AddCookie()
  .AddOpenIdConnect(options => {
    var optionsSetup = new OpenIdConnectOptionsSetup(b2cOptions);
    optionsSetup.Configure(options);
  });

services.AddAuthentication()
  .AddJwtBearer(options => {
    var optionsSetup = new JWTBearerOptionsSetup(b2cOptions);
    optionsSetup.Configure(options);
  });

与 Configure 方法中的这一行一起:

app.UseAuthentication();

OpenIdConnectOptionsSetup 取自(稍作修改)aspnetcore AD B2C 示例存储库。

JWTBearerOptionsSetup 是对 aspnetcore AD B2C 示例存储库的重构,用于将 JWT 配置代码提取到外部类中。

现在,对 /api 端点的 AJAX 调用遇到了重定向到我们 AD 的登录策略端点的 OpenId,因此 Cookie/OpenIdConnect 中间件正在处理这些。我需要一种方法让 /api 直接进入 JWTBearer 中间件。

这可能吗?我必须将 Web 和 API 项目分开吗?

【问题讨论】:

标签: asp.net openid-connect


【解决方案1】:

我建议您将 web 和 api 分离为单独的服务,否则将更难推理系统的行为。系统故障排除也将更容易。

cookieJWtBearer 处理程序都将尝试从会话 cookie 或从访问令牌。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2019-12-05
    • 2021-01-19
    • 2016-11-07
    • 2017-12-11
    • 2020-05-06
    • 2016-09-20
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多