0

下面是我通过 MSAL 弹出和登录的代码。

var app = PublicClientApplicationBuilder.Create(msal.ClientId)
.WithDefaultRedirectUri()
.WithTenantId(msal.TenantId)
.Build();

var result = await app.AcquireTokenInteractive(msal.Scopes).ExecuteAsync();

上面的代码在我的本地机器上运行时有效。

下面是我在 Azure AD 中的设置。当我将它设置为 localhost:5000 时它工作 在此处输入图像描述

但是当我将 localhost 设置为托管在 Azure 虚拟机上的“myWebAppUrl”时。MSAL 不会弹出。它只会返回“操作已取消”。我在这里错过了什么? 在此处输入图像描述

4

1 回答 1

0

请检查以下几点。

  1. 在 azure ad 中,回复 URL 必须以方案 https 开头,除非使用 localhost。例如:http://localhost:5000 ,您可以使用类似的东西https://yourappurl 并且不要忘记在权限下授予管理员同意您在 azure 广告中拥有的范围。请检查重定向 URI 限制

  2. 使用系统浏览器的应用程序:http://localhost

    使用嵌入式浏览器的应用程序:https://login.microsoftonline.com/common/oauth2/nativeclient

    对于 Node.js,您可以使用msal://redirect

请检查添加重定向 URI部分和客户端应用程序配置 (MSAL) | Microsoft Docs 并检查您是否可以将机密客户端用于您的应用程序。

一些身份验证库(如 MSAL.NET)在未指定其他重定向 URI 时使用默认值 urn:ietf:wg:oauth:2.0:oob,不建议这样做。此默认设置将在下一个主要版本中作为重大更改进行更新。

其他参考

  1. 实例化公共客户端应用程序 (MSAL.NET) - Microsoft 标识平台 | 微软文档
  2. 初始化 MSAL.NET 客户端应用程序 - Microsoft 标识平台 | 微软文档
于 2021-12-08T18:35:52.113 回答