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

MSAL桌面及移动端应用redirect_uri配置无效问题问询

问题根因

  1. 重定向URI不匹配:你调用了.WithDefaultRedirectUri()方法,但当应用注册的signInAudience为AzureADandPersonalMicrosoftAccount时,该方法会自动生成http://localhost前缀的本地回环地址作为重定向URI,和你在应用清单中注册的https://login.microsoftonline.com/common/oauth2/nativeclient不匹配,所以触发报错。
  2. allowPublicClient配置未显式开启:你当前应用清单中allowPublicClient值为null,桌面客户端属于公共客户端应用,需要显式开启该配置才能正常使用公共客户端流。
  3. 默认使用系统浏览器而非内嵌窗口:MSAL.NET桌面端默认优先调用系统浏览器完成身份验证,而非弹出内嵌的WebView窗口,和你预期的交互方式不一致。

解决步骤

方案一(优先,适配现有注册配置)

  1. 修改MSAL初始化代码,替换默认重定向URI配置,手动指定你已经注册的重定向地址:
PublicClientApp = PublicClientApplicationBuilder.Create(strApplicationID)
    // 替换默认配置,手动指定注册好的重定向URI
    .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
    .Build();
  1. 显式指定使用内嵌WebView弹出身份验证窗口,修改获取Token的代码:
authResult = await PublicClientApp.AcquireTokenInteractive(listScopes)
            // 启用内嵌验证窗口
            .WithUseEmbeddedWebView(true)
            .ExecuteAsync();
  1. 调整应用注册配置:在Azure门户的应用注册「身份验证」页面,将「允许公共客户端流」选项设为「是」,或者直接修改应用清单中将allowPublicClient的值改为true。

方案二(适配默认重定向逻辑)

保留代码中的.WithDefaultRedirectUri()配置,在应用注册的「桌面和移动」重定向URI列表中,添加MSAL自动生成的本地回环地址(可以在报错的请求URL里找到完整的localhost重定向地址,或者直接加http://localhost也可),同时完成方案一里的步骤2、3的配置即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:06:03