Tfs 如何以编程方式向Azure Devops中的特定组授予存储库读取权限
我拥有Azure Devops组织,希望为给定存储库列表中的某个组设置只读权限 下面指定了如何通过web控制台手动执行此操作: 如何通过RESTAPI或其他编程方式实现Tfs 如何以编程方式向Azure Devops中的特定组授予存储库读取权限,tfs,azure-devops,acl,azure-devops-rest-api,tfs-security,Tfs,Azure Devops,Acl,Azure Devops Rest Api,Tfs Security,我拥有Azure Devops组织,希望为给定存储库列表中的某个组设置只读权限 下面指定了如何通过web控制台手动执行此操作: 如何通过RESTAPI或其他编程方式实现 我发现以下内容可以设置全局权限:而且似乎还有一个API可以设置ACL,但其中没有任何内容指定如何使用Azure Devops Rest API标识受信者组或目标存储库:: 首先,您需要获取组的标识符。这可以通过identiesapi来完成 如果您拥有组的唯一id: GET https://vssps.dev.azure.com/
我发现以下内容可以设置全局权限:而且似乎还有一个API可以设置ACL,但其中没有任何内容指定如何使用Azure Devops Rest API标识受信者组或目标存储库:: 首先,您需要获取组的标识符。这可以通过
identies
api来完成
如果您拥有组的唯一id:
GET https://vssps.dev.azure.com/fabrikam/_apis/Identities/{id}?queryMembership=None
然后从json响应.descriptor.Identifier
中获取描述符
如果您没有组id,但有显示名称:
GET https://vssps.dev.azure.com/fabrikam/_apis/Identities?searchFactor=DisplayName&factorValue={display name url encoded}&options=None&queryMembership=None
然后从json响应中获取描述符[0].descriptor.Identifier
获取您的存储库id和项目id(这比组标识符容易得多,所以我不会详细说明),然后您就拥有了所有必需的数据。构建您的请求主体:
{
"token":"repoV2/{projectId}/{repoId}/",
"merge":true,
"accessControlEntries":[
{
"descriptor":"Microsoft.TeamFoundation.Identity;{groupIdentifier}",
"allow":2,
"deny":0,
"extendedInfo":{
"effectiveAllow":2,
"effectiveDeny":0,
"inheritedAllow":2,
"inheritedDeny":0
}
}
]
}
及
注意,url中的id是硬编码的,因为它是一个常量。但您也可以从
GET https://dev.azure.com/fabrikam/_apis/securitynamespaces
显然,Azure Devops从web控制台正确地使用了自己的rest api,所以我可以对其进行反向工程。将更新
GET https://dev.azure.com/fabrikam/_apis/securitynamespaces