【问题标题】:Azure Devops Unable to create service hook programatically due to permission由于权限,Azure Devops 无法以编程方式创建服务挂钩
【发布时间】:2019-05-20 11:16:22
【问题描述】:

我正在使用 Rest API 为 Azure DevOps 上的项目设置服务挂钩(来自此处:https://docs.microsoft.com/en-us/rest/api/azure/devops/hooks/subscriptions/create?view=azure-devops-rest-5.0#security

对于该组织中的同一用户,我已从项目设置(来自https://dev.azure.com/{organization}/{repo}/_settings/serviceHooks)成功创建服务挂钩。所以这意味着我有权创建订阅钩子。

对于编程,我使用 PAT 为 xxx 组织使用范围代码(读、写)(vs.code_write)进行授权。我已尝试使用带有 full_access 的 PAT,但效果不佳。

这是请求:

POST https://dev.azure.com/xxx/_apis/hooks/subscriptions?api-version=5.0

Header: Authorization: Basic <Base64PAT>
Body: {
  "publisherId": "tfs",
  "eventType": "git.pullrequest.updated",
  "resourceVersion": "1.0",
  "consumerId": "webHooks",
  "consumerActionId": "httpRequest",
  "publisherInputs": {
    "notificationType": "PushNotification",
    "repository": "<repo_id>"
  },
  "consumerInputs": {
    "url": "https://my/receiver/url/"
  }
}

这是错误响应:

{
    "$id": "1",
    "innerException": null,
    "message": "The user '<user_id>\\<email>' does not have permission to edit a subscription.",
    "typeName": "System.ArgumentException, mscorlib",
    "typeKey": "ArgumentException",
    "errorCode": 0,
    "eventId": 0
}

【问题讨论】:

  • 您是如何发送请求的?可以分享一下代码吗?
  • 我使用邮递员提出请求。

标签: azure azure-devops hook webhooks azure-devops-rest-api


【解决方案1】:

Azure Devops 由于权限而无法以编程方式创建服务挂钩

根据错误信息:

"用户 '\' 没有权限编辑 订阅。”

您似乎没有编辑订阅的权限。我们知道,当一个事件发生时,项目中所有启用的订阅都会被评估,并为所有匹配的订阅执行消费者操作

所以,我们应该有编辑订阅的权限。您可能需要“Edit Subscriptions”和“view subscriptions”来设置订阅。默认情况下,只有项目管理员拥有这些权限。

查看Q & A 了解更多详情。

希望这会有所帮助。

【讨论】:

  • projectId 未在publisherInputs 中指定时似乎存在错误。
【解决方案2】:

如果您可以通过 Web UI 创建订阅(您实际上拥有权限),并且访问令牌的范围正确, 但这仍然失败尝试将projectId 添加到publisherInputs

{
  ...
  "publisherInputs": {
    ...
    "projectId": "<guid>"
  },
  ...
}

如果你不知道如何获取projectId,试试这个 api:

MSDN: Projects - Get

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多