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

Duende BFF部署后Firefox丢失关联Cookie引发登录异常

Duende+BFF部署后Firefox登录报"Correlation failed"问题排查与解决

问题概况

  • 技术栈:Duende Software + Backend for Frontend(BFF)模式
  • 本地验证:Edge/Chrome/Firefox三大浏览器均能正常完成登录流程
  • 服务器部署后异常表现:Edge/Chrome登录正常,但Firefox 111.0 64位登录时抛出Correlation failed错误,服务器日志显示找不到.AspNetCore.Correlation前缀的关联Cookie

客户端核心代码(Program.cs)

var builder = WebApplication.CreateBuilder(args);

// 配置BFF服务
builder.Services.AddBff()
    .AddRemoteApis();

// 配置认证与授权
builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = "cookie";
    options.DefaultChallengeScheme = "oidc";
})
.AddCookie("cookie", options =>
{
    options.Cookie.Name = "__Host-bff";
    options.Cookie.SameSite = SameSiteMode.Strict;
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
})
.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "https://your-identity-server-domain";
    options.ClientId = "bff-client-id";
    options.ClientSecret = "bff-client-secret";
    options.ResponseType = "code";
    options.Scope.Clear();
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    options.Scope.Add("api-access");
    options.SaveTokens = true;
    options.GetClaimsFromUserInfoEndpoint = true;
    options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always;
    options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always;
});

var app = builder.Build();

app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseBff();
app.UseAuthorization();

// 映射BFF管理端点
app.MapBffManagementEndpoints();

// 映射远程API路由
app.MapRemoteApi("/api")
    .RequireAccessToken();

app.Run();

排查过程与根因定位

  1. 结合日志信息,确认异常触发点为OpenID Connect回调阶段,无法找到关联Cookie
  2. 对比本地与服务器环境差异,排除代码配置、HTTPS、Cookie策略等因素
  3. 最终发现服务器系统时间比标准时间滞后2小时:
    • 登录流程中生成的.AspNetCore.Correlation关联Cookie包含精确的过期时间,服务器时间偏差导致Cookie实际已过期
    • Firefox严格执行Cookie过期规则,直接删除了过期的关联Cookie,回调时无法匹配关联值,触发Correlation failed错误
    • Edge/Chrome对过期Cookie的处理逻辑相对宽松,未立即删除过期Cookie,因此仍能完成登录流程

解决方案

将服务器系统时间同步至当前标准时间(可通过NTP服务自动同步),确保Cookie的过期时间计算准确,解决关联Cookie提前过期的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:19:58