ASP.NET Core Web-API认证问题排查:SimpleInjector正常,OpenIdConnect配置需调整
ASP.NET Core Web API 认证问题排查总结
刚梳理完你这个认证问题的排查过程,给你明确下结论和解决方向:
- 首先排除SimpleInjector的嫌疑:特意检查了它的交叉连接功能,运行完全正常,不存在配置遗漏的问题,所以这个认证异常和SimpleInjector没关系。
- 问题根源在OpenIdConnect配置上:微软已经把ASP.NET Core的认证配置逻辑从中间件迁移到了服务层,现在必须通过服务注册的方式来配置认证内容,不能再用旧的中间件写法了。
给你一个典型的配置示例(根据你的项目版本调整细节):
// 在 Program.cs 中配置服务 builder.Services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; }) .AddCookie() .AddOpenIdConnect(options => { options.ClientId = "你的客户端ID"; options.ClientSecret = "你的客户端密钥"; options.Authority = "你的身份提供者地址"; options.ResponseType = OpenIdConnectResponseType.Code; // 添加需要的权限范围 options.Scope.Add("openid"); options.Scope.Add("profile"); // 根据实际需求添加其他配置,比如回调路径、令牌验证等 }); // 中间件管道配置(注意顺序!) app.UseAuthentication(); app.UseAuthorization();
另外要注意:UseAuthentication()必须放在UseAuthorization()之前,而且要在路由中间件(app.UseRouting())之后、端点中间件(app.UseEndpoints())之前,确保认证逻辑能在请求到达业务端点前生效。
内容的提问来源于stack exchange,提问作者onefootswill
相关产品推荐
相关产品推荐

