【问题标题】:Azure: Authorization fail when trying to create notification hub namesapceAzure:尝试创建通知中心命名空间时授权失败
【发布时间】:2017-10-13 12:20:35
【问题描述】:

我正在使用 node.js SDK 调用 Azure 通知中心 api,我使用 Azure Active Directory 注册了一个应用程序,还创建了一个资源组并将我的用户作为所有者添加到其中。但是调用 api 时出现此错误:

授权失败

具有对象 ID 的客户端“333848ca-f996-XXXXXXXXXXXX” '333848ca-f996-XXXXXXXXX' 无权执行 在范围内操作“Microsoft.NotificationHubs/namespaces/write” '/subscriptions/ef8e8e-XXXXXXXXXXXX/resourceGroups/notificationGroup/providers/Microsoft.NotificationHubs/namespaces/namespaceapp1

代码:

  MsRest.loginWithServicePrincipalSecret(
    My Subscription ID,
    My Application Secret Key,
    My Directory ID, // found under AD -> properties 
    (err, credentials) => {
      if (err) throw err;
      // eslint-disable-next-line 
      const client = new notificationHubsClient(credentials, AZURE_SUBSCRIPTION_ID);
      const createNamespaceParameters = {
        location: AZURE_LOCATION,
        tags: {
          tag1: 'value1',
          tag2: 'value2',
        },
      };
      client.namespaces.createOrUpdate(AZURE_RESOURCE_GROUP_NAME, req.body.name, createNamespaceParameters,
        (error, result) => {
          if (error) {
            res.send(error);
          }
          console.info(`Namespace created${JSON.stringify(result, null, ' ')}`);
          res.send('app created');
        });
    },
  );

【问题讨论】:

    标签: node.js azure


    【解决方案1】:

    根据错误消息,您需要将 Azure Active Directory 应用程序添加到 Contributor 角色,以便在 Azure Notification Hub 中创建命名空间。


    您可以按照以下步骤进行操作,这些步骤也记录在 here

    1. 转到Azure portal 并选择订阅

    1. 选择要分配应用程序的特定订阅(资源组或资源)。

    1. 选择访问控制 (IAM)

    1. 选择添加

    1. 选择贡献者角色以分配给您的 AAD 应用程序。

    【讨论】:

    • 我的用户被添加为订阅和资源组的贡献者,订阅和资源组在通知中心具有完全访问权限,但是我注意到当我尝试时没有分配给应用程序所有者的用户要添加我的用户,即使它是拥有该帐户的用户,它也是不可点击的。
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 2021-03-15
    • 2021-05-13
    • 2015-04-21
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多