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

使用Entra租户MSAL 2登录正常,登出时出现404错误求助

问题分析与解决办法

问题原因

  1. MVC路由未映射:你使用的MicrosoftIdentity/Account/SignOut是MVC控制器路由,但当前应用仅配置了Razor组件端点,未添加MVC路由映射,导致登出请求无法匹配到对应的控制器,返回404。
  2. 相对路径解析错误:登出链接使用相对路径MicrosoftIdentity/Account/SignOut,在不同路由层级下可能被错误解析,无法指向正确的登出端点。
  3. 缺失登出重定向配置:Entra Customer租户登出流程需要明确的重定向地址,未配置会导致流程不完整,甚至间接引发路由问题。

解决步骤

1. 添加MVC路由映射

在应用端点配置中,新增MVC控制器路由映射,确保Account控制器的登出路由能被识别:

var app = builder.Build();

// 其他中间件配置...

app.UseAuthentication();
app.UseAuthorization();

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode()
    .AddInteractiveWebAssemblyRenderMode()
    .AddAdditionalAssemblies(typeof(MyClientApp._Imports).Assembly);

// 添加MVC路由映射
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

2. 修正登出链接路径

将相对路径改为绝对路径,避免路由层级导致的解析错误:

<a href="/MicrosoftIdentity/Account/SignOut" class="ti-dropdown-item">
    <i class="ti ti-logout  text-lg"></i>
    Sign Out
</a>

3. 配置登出重定向地址

在AzureAd配置中添加PostLogoutRedirectUri,指定登出完成后的跳转页面:

"AzureAd": {
    "Authority": "https://55...67.ciamlogin.com/55...67/v2.0",
    "Instance": "https://55...67.ciamlogin.com/55...67/v2.0",
    "Domain": "exampleTenant.onmicrosoft.com",
    "ClientId": "44...56",
    "ClientSecret": "{{omitted}}",
    "ClientCapabilities": [ "cp1" ],
    "CallbackPath": "/signin-oidc",
    "PostLogoutRedirectUri": "/"
  }

4. 确认中间件顺序

确保UseAuthentication()和UseAuthorization()在所有端点映射之前执行,当前配置已满足此要求,无需调整。

完成以上修改后重启应用,登出流程将正常触发:先跳转至Entra Customer租户的登出页面,完成后自动重定向到配置的地址,不再出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:30:12