【发布时间】: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 项目分开吗?
【问题讨论】:
-
所以你得到这个工作了吗? Wildermuth 的解决方案是正确的吗?