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

Azure AD自定义OpenIdConnectEvents触发MsalUiRequiredException异常咨询

问题原因

该现象不属于已知Bug,是配置逻辑错误导致。
调用AddMicrosoftIdentityWebApp()方法时,Microsoft.Identity.Web库会自动为OpenIdConnectOptions注入默认的事件处理逻辑,包含增量同意挑战响应、令牌缓存同步、身份验证流程校验等必要逻辑。你直接通过new OpenIdConnectEvents赋值给options.Events的写法,直接覆盖了所有默认事件实现,导致MsalUiRequiredException对应的挑战流程无法正常触发,最终抛出IDW10502错误。

正确配置方式

不要直接替换整个Events对象,仅追加你需要的自定义逻辑,保留原有默认实现即可:

services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    // 保留原有已注册的事件委托
    var existingOnRedirectToIdentityProvider = options.Events.OnRedirectToIdentityProvider;
    options.Events.OnRedirectToIdentityProvider = async context =>
    {
        // 执行自定义的转发头适配逻辑
        if (context.Request.Headers.ContainsKey("X-Forwarded-Host"))
        {
            context.ProtocolMessage.RedirectUri = "https://" + context.Request.Headers["X-Forwarded-Host"] + Configuration.GetSection("AzureAd").GetValue<String>("CallbackPath");
        }
        // 调用原有默认事件逻辑,不可省略
        await existingOnRedirectToIdentityProvider(context);
    };
});
补充建议

如果是为了适配反向代理/网关的转发场景,更推荐直接配置官方的ForwardedHeaders中间件,Microsoft.Identity.Web原生支持识别转发后的请求上下文,不需要手动修改RedirectUri。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:05