Azure资源管理器身份验证失败

时间:2019-02-27 16:23:56

标签: node.js azure azure-resource-manager

我试图通过以下示例代码使用node.js来访问azure资源管理器:

msRestAzure.interactiveLogin(function(err, credentials) {
	if (err) console.log(err);
 var client = new resourceManagement.ResourceManagementClient(credentials, 'token');
 client.resources.list(function(err, result) {
   if (err) console.log(err);
   console.log(result);
 });
});

运行它时出现以下错误:

 { Error: The access token is from the wrong issuer 'https://sts.windows.net/token/'. It must match the tenant 'https://sts.windows.net/token/' associated with this subscription. Please use the authority (URL) 'https://login.windows.net/token' to get the token. Note, if the subscription is transferred to another tenant there is no impact to the services, but information about new tenant could take time to propagate (up to an hour). If you just transferred your subscription and see this error message, please try back later.
    at client.pipeline.error (D:\azure-arm\node_modules\azure-arm-resource\lib\resource\operations\resources.js:496:19)
    at retryCallback (D:\azure-arm\node_modules\ms-rest\lib\filters\systemErrorRetryPolicyFilter.js:89:9)
    at retryCallback (D:\azure-arm\node_modules\ms-rest\lib\filters\exponentialRetryPolicyFilter.js:140:9)
    at D:\azure-arm\node_modules\ms-rest\lib\filters\rpRegistrationFilter.js:59:14
    at handleRedirect (D:\azure-arm\node_modules\ms-rest\lib\filters\redirectFilter.js:39:9)
    at D:\azure-arm\node_modules\ms-rest\lib\filters\formDataFilter.js:23:14
    at Request.defaultRequest [as _callback] (D:\azure-arm\node_modules\ms-rest\lib\requestPipeline.js:125:16)
    at Request.self.callback (D:\azure-arm\node_modules\request\request.js:185:22)
    at emitTwo (events.js:106:13)


    at Request.emit (events.js:191:7)

在任何看到令牌的地方,我都替换了那里的实际值。我提供的订阅ID是正确的。我尝试直接登录而不是使用上面的键登录,并且效果相同。理想情况下,我们希望azure的应用程序能够访问arm API,但在活动目录中看起来不太可能,而且我似乎无法使它正常工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我使用了ms-rest-azure版本2.6.0和azure-arm-resource版本7.3.0,并且使用相同的代码对我来说运行良好。

我认为使用服务主体身份验证方式或基本身份验证方式而不是交互式登录身份验证方式进行身份验证是安全的。在这里-> https://github.com/Azure/azure-sdk-for-node/blob/master/Documentation/Authentication.md#using-authentication-in-your-nodejs-script中提供了其他身份验证方法的步骤,如果您感兴趣的话可以尝试。

此外,由于您理想地在Azure中寻找应用程序以访问ARM API,因此我认为值得阅读本文-> https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-api-authentication

希望这会有所帮助!