【问题标题】:Programmatically query permissions on a Git repository hosted on TFS以编程方式查询托管在 TFS 上的 Git 存储库的权限
【发布时间】:2015-03-30 07:38:32
【问题描述】:

我一直试图找出以编程方式获取特定 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 的所有 GUID,但无法理解从何处获取用于填充 PermissionSetId 参数的 GUID。

查看网页,我可以看到从gitRepositoryPermissionSet中提取的值,但我不知道如何获取该值。

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

【问题讨论】:

  • 请不要在标题中添加标签。
  • 目前还没有真正支持的 REST API...

标签: git tfs azure-devops tfs-sdk


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您在 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
    

    这就是您最可能要寻找的。​​p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2015-11-16
      • 2015-10-05
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多