访问Azure Active Directory时模拟登录的用户

时间:2019-01-14 10:58:12

标签: javascript node.js azure azure-active-directory azure-resource-manager

我使用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进行身份验证。

1 个答案:

答案 0 :(得分:0)

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

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);
 });
});

您也可以参考此link