以编程方式查询在TFS上托管的Git存储库的权限

问题描述 投票:8回答:2

我一直试图找出以编程方式获取特定Git存储库上的权限的方法。

联机给出的TFS API参考未详述任何安全API。但是,当您或从Web门户查看修改安全性时,这绝对是在TFS中完成的。

跟踪网络呼叫,我可以看到正在对以下API进行呼叫

http://tfsserver/tfs/DefaultCollection/[TeamProject]/_api/_security/DisplayPermissions?
__v=5&tfid=[PROJ_GUID]&permissionSetId=[PERMMISSIONSET_GUID]
&permissionSetToken=repositories/[REPOSITORY_GUID].

我已经推断出所有传递给上述URL的GUIDS,但是不知道从哪里获取GUID来填充PermissionSetId参数。

查看网页,我可以看到从gitRepositoryPermissionSet中获得了该值,但是我找不到如何获得该值。

想知道是否有人可以帮助我理解此参数。

git tfs azure-devops tfs-sdk
2个回答
0
投票

如果您在Web浏览器中查看Git存储库并执行view-source,则将获得它的HTML源。在那里,您会发现类似以下内容:

<script class="options" defer="defer" type="application/json">
{"tfsRepositoryPermissionSet":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
 **"gitRepositoryPermissionSet":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"**,
 "projectGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
 "projectUri":"vstfs:///Classification/TeamProject/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
 "projectVersionControlInfo":{
     "supportsGit":true,
     "project":{
         "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
         "name":"xxxxxx",
         "url":"http://xxx:xxx/xxx/xxxxxxxxxxxxxxxx/_apis/projects/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
         "state":"wellFormed"
     }
 },
 "gitRepositories":[
     {"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","name":"xx

这是您最可能要寻找的。


0
投票

早在2015年,尚无完善的API,但由于情况已发生变化。现在有一个完整的REST api用于权限,可以使用tfssecurity,并且Azure-CLI已扩展为具有查询和设置权限的能力。

我最近写了一篇博客文章,探讨了Git存储库权限:

© www.soinside.com 2019 - 2024. All rights reserved.