【问题标题】:Access Token do not include access for API with MSAL访问令牌不包括使用 MSAL 访问 API
【发布时间】:2019-04-11 11:33:29
【问题描述】:

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

一切都在 Azure AD 端进行配置,因为我可以使用检索到的访问令牌通过 dotnet 核心 Web 应用程序与 API 对话。

dotnet core app 和 react app 的区别在于“resource”属性。我不确定如何将其包含在 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);
        }
      );
    });
  }

对于 dotnet 核心应用程序,我使用的配置与 Azure AD 应用程序中配置的两个 URL 相同。

.AddOpenIdConnect(o =>
                {
                    ....
                    o.Resource = "GUID of the API";
                });

我没有使用 MSAL 发送此资源参数。不确定如何发送该参数以及是否是问题所在。

感谢任何帮助。

【问题讨论】:

标签: azure-active-directory msal msal.js


【解决方案1】:

MSAL 使用范围 的概念,而不是资源。 我对您的问题的印象是,这是一个 v1 Web API(在 Azure portal 的 App 注册刀片中注册? 如果是这种情况,您的资源的范围可能是 o.Resource+"/user_impersonation"

如果它是 v2.0 API(使用 apps.dev.microsoft.com 注册)或 Azure 门户但使用新应用程序注册(预览版),则在注册时提供范围

对于 ASP.NET Core 应用程序,您可能希望查看以下示例:https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2,可能还有此分支 aspnetcore2-2-signInAndCallGraph

【讨论】:

  • 是的,它注册为v1 web api。我尝试将范围用作 /user_impersonation。我可以看到同意屏幕现在包含 API 访问权限,但使用令牌的 api 调用仍然不起作用。我删除了我的 Azure 应用程序并再次重新创建它们,以确保现在我的 dotnet 应用程序中的 access_token 也无法正常工作。可能是我如何设置应用程序的一些问题,但无法弄清楚。
  • 我能够使我的 .net 核心应用程序工作,但不能使反应应用程序工作。我注意到的唯一区别是 .net 核心应用程序使用 client_secret 来获取 access_token,而 react 应用程序没有。我不想使用这个秘密。
猜你喜欢
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 2021-12-02
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2021-05-15
相关资源
最近更新 更多