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

WPF集成Azure B2C登录:捕获关闭事件与优化浏览器弹窗

解决方案

一、捕获用户关闭登录界面的事件

当用户手动关闭登录窗口时,MSAL会抛出MsalClientException,错误代码固定为authentication_canceled,你可以在catch块中针对性捕获并处理:

AuthenticationResult authResult = null;
var app = App.PublicClientApp;
try
{
    authResult = await app.AcquireTokenInteractive(App.ApiScopes)
        .WithParentActivityOrWindow(new WindowInteropHelper(this.MainWindow).Handle)
        .ExecuteAsync();
}
catch (MsalClientException ex)
{
    if (ex.ErrorCode == "authentication_canceled")
    {
        // 在这里添加取消登录后的逻辑,比如提示用户、重置界面状态等
        MessageBox.Show("登录已取消");
    }
    else
    {
        // 处理其他客户端异常
        throw;
    }
}
catch (Exception ex)
{
    // 处理其余类型异常
    throw;
}

二、让登录完成后浏览器自动关闭并取消提示

需要结合Azure门户配置和代码调整实现:

1. 配置Azure B2C应用的重定向URI

  • 登录Azure门户,进入你的B2C租户和目标应用注册页面
  • 切换到「身份验证」标签,添加重定向URI:msal{你的应用ClientID}://auth(替换{你的应用ClientID}为实际的客户端ID)
  • 确保该URI的类型设置为公共客户端/native (移动和桌面)

2. 调整代码中的登录调用

修改AcquireTokenInteractive的调用,指定配置好的重定向URI,可选使用嵌入式WebView提升体验:

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this.MainWindow).Handle)
    .WithRedirectUri($"msal{App.ClientId}://auth") // 替换为你的应用ClientID
    .WithUseEmbeddedWebView(true) // 可选,使用嵌入式WebView,登录后自动关闭窗口
    .ExecuteAsync();

说明:如果使用系统浏览器,配置正确的重定向URI后,登录完成时浏览器会自动关闭,不会显示提示页面;若仍有问题,检查B2C用户流/自定义策略是否存在额外跳转配置,确保认证完成后直接重定向到指定URI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:35:20