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

Blazor SSR应用OIDC远程登出端点返回400错误的解决咨询

解决Blazor SSR中OIDC远程登出400错误问题

核心结论

ASP.NET Core的OpenID Connect中间件已经内置了Back-Channel Logout的完整处理逻辑,不需要你自行实现端点的登出令牌验证、会话清理等核心功能。你遇到的400错误是因为UseAntiforgery()中间件拦截了OIDC提供商发送的登出请求——这类请求不会携带Blazor的防伪造令牌,因此被判定为非法请求。

解决方案

只需让防伪造中间件忽略/oidc-remote-logout路径即可,有两种常用方式:

方式一:配置Antiforgery忽略指定路径

在服务配置阶段添加以下代码,让防伪造验证跳过远程登出端点:

builder.Services.AddAntiforgery(options =>
{
    options.IgnoreAntiforgeryToken = context => 
        context.Request.Path.Equals("/oidc-remote-logout", StringComparison.OrdinalIgnoreCase);
});

方式二:调整端点映射时禁用防伪造验证

如果你需要显式映射该端点(虽然框架已自动处理),可以在映射时直接关闭防伪造要求:

app.MapPost("/oidc-remote-logout", async (HttpContext context) =>
{
    // 框架会自动处理登出逻辑,无需额外代码
})
.RequireAntiforgery(false);

额外注意事项

  • 保持现有中间件顺序不变:UseAuthentication() -> UseAuthorization() -> UseAntiforgery()的顺序是正确的,不需要调整。
  • 确认OIDC配置中RemoteSignOutPath与你忽略的路径完全一致,建议用忽略大小写的匹配方式避免路径大小写问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:18:28