为 Angular Web 应用程序配置 Azure 资源管理器 API

问题描述 投票:0回答:1

我一直在尝试调用azure资源管理器api来获取订阅中的资源列表,但是一旦我调用该方法,它就会给我一个错误,并且用户无法进行身份验证并给出范围未找到错误 “应用程序“合作伙伴中心 Web 应用程序 3”请求资源上不存在的范围“user_impersonation””

和“ invalid_client:AADSTS650053:应用程序“合作伙伴中心 Web 应用程序 3”请求资源上不存在的范围“user_impersonation””

我已经分享了我尝试调用的方法()

fetchAzureResources() {
  this.msalservice.acquireTokenSilent({ scopes: ['https://management.azure.com/user_impersonation'] }).subscribe((response) => {
    const accessToken = response.accessToken;

    this.httpClient.get(`https://management.azure.com/subscriptions?api-version=2014-04-01`, {
      headers: {
        Authorization: `Bearer ${accessToken}`
      }
    }).subscribe((data: any) => {
      this.resources = data.value;
      // this.dataSource.data = this.resources; // Update table data
    });
  });
}
}

虽然代币正在生成

代币

我尝试添加范围“https://management.azure.com/user_impersonation”它确实生成了令牌,但我无法调用“https://management.azure.com/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxx/资源?api-version=2021-04-01"

azure azure-resource-manager msal.js
1个回答
0
投票

应用程序“合作伙伴中心 Web 应用程序 3”请求资源上不存在的范围“user_impersonation”” 和“ invalid_client:AADSTS650053:应用程序“合作伙伴中心 Web 应用程序 3”要求资源上不存在的范围“user_impersonation”

您遇到的错误是从 Angular Web 应用程序访问 Azure 资源管理器 API 时出现身份验证和授权问题。该错误消息表明您尝试访问的 Azure 资源无法识别范围“user_impersonation”。

您应该将读者角色分配给应用程序,如下所示,

enter image description here

向应用程序添加以下权限。

enter image description here

代码:

fetchAzureResources() {
  this.msalservice.acquireTokenSilent({ scopes: ['https://management.azure.com/user_impersonation'] }).subscribe((response) => {
    const accessToken = response.accessToken;
    this.httpClient.get(`https://management.azure.com/subscriptions?api-version=2014-04-01`, {
      headers: {
        Authorization: `Bearer ${accessToken}`
      }
    }).subscribe((data: any) => {
      this.resources = data.value;
      // this.dataSource.data = this.resources;
    });
  });
}
}
© www.soinside.com 2019 - 2024. All rights reserved.