Azure active directory 访问令牌不包括对带有MSAL的API的访问

Azure active directory 访问令牌不包括对带有MSAL的API的访问,azure-active-directory,msal,msal.js,Azure Active Directory,Msal,Msal.js,我正在react应用程序中使用以针对Azure AD进行身份验证。我能够成功验证用户身份并获取id令牌和访问令牌。但是检索到的访问令牌无法访问受Azure AD保护的API 一切都配置为在Azure AD端查找,因为我可以使用检索到的访问令牌使用dotnet核心web应用程序与API对话 dotnet核心应用程序和react应用程序之间的区别在于“资源”属性。我不知道如何将其包含在MSAL的请求中 我的反应代码: userAgentApplication = new UserAgentAppli

我正在react应用程序中使用以针对Azure AD进行身份验证。我能够成功验证用户身份并获取id令牌和访问令牌。但是检索到的访问令牌无法访问受Azure AD保护的API

一切都配置为在Azure AD端查找,因为我可以使用检索到的访问令牌使用dotnet核心web应用程序与API对话

dotnet核心应用程序和react应用程序之间的区别在于“资源”属性。我不知道如何将其包含在MSAL的请求中

我的反应代码:

userAgentApplication = new UserAgentApplication(
    "<clientid>",
    "<azureAdUrl>",
    this.authCallback,
    { redirectUri: "http://localhost:3000/", cacheLocation: "localStorage" }
  );

  authCallback(errorDesc, token, error, tokenType) {
    if (token) console.log(token);
  }


login() {
    this.userAgentApplication.loginRedirect().then(function(idToken) {

      this.userAgentApplication.acquireTokenSilent().then(
        function(accessToken) {
          console.log('Access Token: ' + accessToken);
        }
      );
    });
  }
我没有将此资源参数与MSAL一起发送。不确定如何发送该参数,以及这是否是问题所在


非常感谢您的帮助。

MSAL使用的是范围的概念,而不是资源。 阅读您的问题时,我的印象是这是一个v1webapi(在应用程序注册刀片服务器中注册了? 如果是这种情况,资源的作用域可能是o.resource+“/user\u模拟”

如果它是v2.0 API(已注册)或Azure门户,但具有新的应用程序注册(预览),则范围将在注册时提供


对于ASP.NET核心应用程序,您可能需要查看以下示例:,可能是这个分支

我花了一些时间来理解
msal.js
中作用域的值。您是否使用Fiddler或等效工具来捕获流量?在添加代码之前,Postman非常适合确认请求。--是的,它已注册作为v1 web api。我尝试使用范围作为/user\u模拟。我可以看到同意屏幕现在包括api访问,但使用令牌的api调用仍然不起作用。我删除了我的Azure应用并重新创建了它们,只是为了确保,现在我的dotnet应用的访问令牌也不起作用。我如何设置应用可能有问题,但是ldn不明白。我可以使我的.net core应用正常工作,但不能使react应用正常工作。我注意到的唯一区别是.net core应用使用客户端\u密码获取访问令牌,而react应用没有。我不想使用该密码。
.AddOpenIdConnect(o =>
                {
                    ....
                    o.Resource = "GUID of the API";
                });