You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC集成Azure AD B2C登出无限循环问题求助

解决Azure AD B2C登出无限循环问题

问题核心诱因

你遇到的登出循环问题,本质是Azure AD B2C注销回调与应用本地处理逻辑不匹配,导致登出请求被反复触发,常见原因包括:

  • B2C应用注册的注销URL配置错误
  • 应用内回调路径的处理逻辑未终止请求
  • 本地用户会话未被正确清除

具体解决方案

1. 修正Azure AD B2C应用注册的注销URL

登录Azure门户进入你的B2C租户,找到对应应用注册:

  • 进入身份验证页面,在注销URL区域添加完整回调地址,例如开发环境用 https://localhost:5001/signout/B2C_1_SUSI,生产环境替换为实际域名+路径。
  • 确保该URL与appsettings.json中SignedOutCallbackPath的配置完全一致(包含策略IDB2C_1_SUSI)。

2. 完善登出回调事件的处理逻辑

在Configure<OpenIdConnectOptions>的OnSignedOutCallbackRedirect事件中,添加会话清除和重定向逻辑,终止循环:

options.Events.OnSignedOutCallbackRedirect = async context => {
    Console.WriteLine("OnSignedOutCallbackRedirect");
    // 清除本地用户会话
    context.HttpContext.Session.Clear();
    // 重定向到首页或指定页面,避免重复触发登出流程
    context.Response.Redirect("/");
    // 终止请求处理,阻止后续中间件执行
    context.HandleResponse();
};

3. 确认中间件与路由配置有效性

检查项目配置是否符合要求:

  • UseAuthentication()和UseAuthorization()必须在UseRouting()之后、UseEndpoints()之前。
  • endpoints.MapRazorPages()已正确配置,保证Microsoft Identity UI的登出相关页面能正常访问。

4. 验证B2C用户流的注销设置

进入B2C租户的用户流,打开B2C_1_SUSI策略:

  • 检查注销设置,确认已启用"注销后重定向",并指定与应用一致的回调URL。

额外注意事项

  • 测试时必须使用HTTPS(即使开发环境),B2C要求回调URL必须为HTTPS协议。
  • 登出请求请通过/MicrosoftIdentity/Account/SignOut触发,而非/MicrosoftIdentity/Account/SignedOut——后者是登出完成后的回调页面,直接访问会引发逻辑异常。

内容的提问来源于stack exchange,提问作者Emilian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:29:57