.NET 5 集成Azure B2C实现登出时陷入无限循环问题求助
问题根因
你配置了全局授权过滤器要求所有请求必须经过身份认证,Azure B2C完成登出后回调的SignedOutCallbackPath属于未认证请求,会被过滤器拦截重定向到登录页面,由此触发无限重定向循环。
修复步骤
- 第一步:调整全局授权规则,放开MicrosoftIdentity相关路径的匿名访问权限
你当前给所有控制器全局注入了RequireAuthenticatedUser的授权策略,可直接移除原有全局添加AuthorizeFilter的逻辑,改为给需要登录校验的业务控制器单独添加[Authorize]注解即可,修改Startup中的配置:
如果希望保留全局授权规则,也可以单独给MicrosoftIdentity区域放开权限:services.AddControllersWithViews() // 移除原有全局添加AuthorizeFilter的逻辑 .AddMicrosoftIdentityUI();services.AddControllersWithViews(options=> { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI() .AddRazorPagesOptions(options => { // 允许MicrosoftIdentity区域所有页面匿名访问 options.Conventions.AllowAnonymousToAreaFolder("MicrosoftIdentity", "/"); }); - 第二步:检查Azure B2C应用注册的登出地址配置
登录Azure Portal进入你的B2C应用注册页,在「身份验证」菜单的「登出URL」配置项中,添加你业务域名加SignedOutCallbackPath的完整地址,比如https://你的应用域名/signout/B2C_1_Normal,确保和你appsettings中的配置完全一致。 - 第三步:可选校验配置项
确认你的SignUpSignInPolicyId拼写完全正确,大小写和B2C后台的用户流名称保持一致,避免因为策略匹配错误导致重定向逻辑异常。
内容的提问来源于stack exchange,提问作者Dylan。
相关产品推荐
相关产品推荐

