单元测试项目在方法 AcquireTokenInteractive 上崩溃,例如 IPublicClientApplication

Unit Test project crashes on method AcquireTokenInteractive for instance IPublicClientApplication

我正在将单元测试项目从netcore3.0 迁移到net6.0。在 Visual Studio 中调试时,我 运行 在为 IPublicClientApplication 实例调用方法 AcquireTokenInteractive 时遇到问题。

这是截取的代码:

IPublicClientApplication PublicClientApp = PublicClientApplicationBuilder.Create(azureADAppSettings.ApplicationID)
            .WithTenantId(azureADAppSettings.TenantID)
            .WithAuthority(AzureCloudInstance.AzurePublic, tenantName)
            .WithRedirectUri(redirectUri)
            .Build();

result = await PublicClientApp.AcquireTokenInteractive(scopes).ExecuteAsync();

方法开始执行,登录页面在浏览器中打开,我登录并在浏览器中收到此消息:

Authentication complete. You can return to the application. Feel free to close this browser tab.

消息在浏览器中显示后,Visual Studio不会return方法AcquireTokenInteractive,Visual Studio停止调试,错误列表中没有错误消息。在输出中我发现了两个异常。

第一个是:异常抛出:'Azure.RequestFailedException' in System.Private.CoreLib.dll

第二个错误是:异常抛出:'Microsoft.Identity.Client.MsalServiceException' in System.Private.CoreLib.dll

我已根据第二条错误消息对我在门户 Azure 中的应用程序注册进行了一些更改。我将缺少的重定向 uri 添加到应用程序注册并将应用程序设置为 public 客户端类型。

第二个错误在我在门户天蓝色的应用程序注册中进行更改后仍然存在。

有谁知道我可以采取以下哪些措施来解决错误消息并接收令牌?

错误是Exception thrown: 'Microsoft.Identity.Client.MsalServiceException' in System.Private.CoreLib.dll

谢谢chigivigi。根据以下 GitHub 评论,您的问题已解决。在此发布作为答案,以帮助可能面临类似问题的其他社区成员。

The issue was that the redirectUri was not added as a native url instead it was added as web URL.

可以参考GitHub问题:Unit Test project crashes on method AcquireTokenInteractive for instance IPublicClientApplication

问题是 redirectUri 没有添加为本机 url,而是添加为网络 URL。