首页 > 解决方案 > 访问 Azure Active Directory 时模拟登录用户

问题描述

我使用 Azure SDK 来检索资源组的列表:

const MsRest = require('ms-rest-azure');
const { ResourceManagementClient } = require('azure-arm-resource');
const credentials = await MsRest.loginWithServicePrincipalSecret(appId, pass, tenantId);
const client= new ResourceManagementClient(credentials, subscriptionId);

const resourceGroups = await client.resourceGroups.list()

然而问题是我收到了订阅中的所有资源组。我只想接收登录用户有权访问的资源组。因此,一种选择是检索资源组的 IAM(访问控制)列表并检查登录用户是否出现在那里。我不想那样做,因为它会向 Azure 提出许多请求。我想在访问 Azure 时模拟登录用户,以便仅获取允许他查看的资源组。

我使用 passport-azure-ad 进行身份验证。

标签: javascriptnode.jsazureazure-active-directoryazure-resource-manager

解决方案


您可以使用以下代码仅接收登录用户有权访问的资源组:

var msRestAzure = require('ms-rest-azure');
var resourceManagement = require("azure-arm-resource");
 
// Interactive Login
msRestAzure.interactiveLogin(function(err, credentials) {
 var client = new resourceManagement.ResourceManagementClient(credentials, 'subscriptionid');
 client.resourceGroups.list(function(err, result) {
   if (err) console.log(err);
   console.log(result);
 });
});

你也可以参考这个链接


推荐阅读