使用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
相关产品推荐
相关产品推荐

