具有本机客户端的Azure B2C-MsalClientException:服务器未找到任何与请求的URI匹配的内容



尝试从本机应用程序运行基本的Azure AD B2C身份验证。我遵循了WPF应用程序注册指南,并使用GitHub示例中提供的代码摘录。

使用Microsoft.Identity.ClientSDK,当我运行await app.AcquireTokenInteractive(App.ApiScopes).ExecuteAsync();时,我得到以下异常:

微软。身份客户MsalClientException:'基于浏览器的身份验证对话框无法完成。原因:服务器未找到任何与请求的URI(统一资源标识符(匹配的内容。'

我在NUnit.net 的测试中运行了这个

我做了以下尝试和检查:

  • 尝试了推荐的URI:https://mytenanturl.com.b2clogin.com/oauth2/nativeclient

  • 尝试了自定义URI,如https://mytenanturl.com/test/auth/nativeclient

  • 尝试了自定义URI,如uri://mytenanturl.com/test/auth/nativeclient

  • 尝试了Azure上默认预先注册的3个URI之一:https://login.microsoftonline.com/common/oauth2/nativeclient

  • 尝试使用本地URI(如https://127.0.0.1/dev/(

  • 这些URI都在AzurePortal / App Registration / Authentication上注册,Platform Configuration设置为Mobile and desktop applications

  • 在应用程序注册清单中,上面写着

    "replyUrlsWithType":[{"url":"https://127.0.0.1/dev","类型":"InstalledClient";},{"url":"https://login.microsoftonline.com/common/oauth2/nativeclient","类型":"InstalledClient";}等,

  • 当我检查IPublicClientApplication对象时,我可以看到.AppConfig.RedirectUri中正确包含的URI。然而,PublicClientApplication.RedirectUri说它是空的。我很困惑,因为我甚至无法理解这个属性是从哪里混合而来的,因为它没有出现在文档中,而PublicClientApplication Class或其父类没有RedirectUri属性。

我做错了什么?

Ms文档中提供的示例显示客户端生成器调用.WithB2CAuthority(AuthoritySignUpSignIn),这是不正确的。

Azure AD应用程序注册页面中的快速启动刀片显示使用WithAuthority(AzureCloudInstance.AzurePublic, Tenant),其中Tenant可以是应用程序注册概述页面上提供的companyurl.comDirectory (tenant) Id