gpt4 book ai didi

asp.net - AspNetCore 2 : OpenIdConnect Cookie for web, API 的 JWT 承载。是否可以?

转载 作者:行者123 更新时间:2023-12-03 15:51:01 25 4
gpt4 key购买 nike

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

到目前为止,我已经设法使用以下代码注册和配置 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 项目分开吗?

最佳答案

我建议您将 web 和 api 分离为单独的服务,否则将更难推理系统的行为。对系统进行故障排除也将更容易。
cookies JWtBearer 处理程序将尝试创建 ClaimsPrincipal 系统中的用户对象,来自 session cookie 或访问 token 。
也许这篇博文可以给你一些提示:

  • Combining Bearer Token and Cookie Authentication in ASP.NET
  • 关于asp.net - AspNetCore 2 : OpenIdConnect Cookie for web, API 的 JWT 承载。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45827764/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com