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

使用WAM登录微软账户报错:仅支持环回重定向URI,发现urn:ietf:wg:oauth:2.0:oob

解决Xamarin Windows应用MSAL AcquireTokenInteractive重定向URI错误

问题分析

错误提示表明当前MSAL使用的是urn:ietf:wg:oauth:2.0:oob重定向URI,而非你配置的Broker专用URI。即便你在Azure AD中添加了ms-appx-web://microsoft.aad.brokerplugin/{sid},但代码中可能未正确关联该URI,或是主分支代码存在配置遗漏。

修复步骤

  • 显式指定重定向URI
    构建PublicClientApplication时必须明确指定Broker对应的重定向URI,不能依赖默认配置。修改代码如下:

    var app = PublicClientApplicationBuilder.Create(ClientId)
        .WithBroker()
        .WithRedirectUri("ms-appx-web://microsoft.aad.brokerplugin/{sid}")
        .Build();
    

    确保Azure AD应用注册中配置的重定向URI与代码中完全一致,{sid}会由MSAL自动填充对应应用的安全标识符

  • 检查主分支代码差异
    对比特性分支与主分支的代码细节:

    • 确认WithBroker()调用未被意外移除
    • 验证ClientId与特性分支一致(主分支可能使用了不同的应用注册,对应的Azure AD未配置正确的重定向URI)
    • 排查是否有其他代码修改覆盖了重定向URI配置
  • 修正令牌请求代码的类型错误
    原代码中AcquireTokenInteractiveParameterBuilder的变量类型错误,ExecuteAsync()返回的是AuthenticationResult,修正后代码:

    IEnumerable<IAccount> accounts = await app.GetAccountsAsync();
    var authResult = await app.AcquireTokenInteractive(GetScopes)
        .WithAccount(accounts.FirstOrDefault())
        .ExecuteAsync();
    

    同时确保IEnumerable指定泛型类型IAccount,避免后续调用异常

额外验证

  • 登录Azure AD门户,确认应用注册的重定向URI列表中准确包含ms-appx-web://microsoft.aad.brokerplugin/{sid}
  • 清理主分支项目缓存后重新构建测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:01:35