2017-09-25 69 views
1

使用VSTS API,我试图列出谁有访问我们在VSTS中的每个git存储库的列表。获取谁有权访问git存储库的列表

我对Git的安全名称空间ID和我通过这个名称空间ID的安全性 - >这里所描述的访问控制列表API: https://www.visualstudio.com/en-us/docs/integrate/api/security/acls

GET https://xxxxxxxx.visualstudio.com/DefaultCollection/_apis/accesscontrollists/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/?api-version=1.0&recurse=true&includeExtendedInfo=false

钻入响应,我可以看到它上市每个回购的权限,以及ref和标签。

每个对象都包含“acesDictionary”,这本身就是与这个样子键的对象:

Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\[email protected]

如何破译ClaimsIdentity?我首先想到的是ClaimsIdentity中的UUID是我VSTS项目中用户的UUID,但事实并非如此。我知道电子邮件地址在那里,所以我想我可以使用它,但现在我很好奇ClaimsIdentity中的UUID代表了什么。 VSTS API文档不提这个。

是安全 - >访问控制列出我应该看的地方吗?我的主要目标是试图获得谁拥有访问VSTS git存储库的列表。

+0

你使用将得到所有资源的REST API(比如所有团队项目的git仓库),所以你最好通过标记或描述符进行过滤。而ClaimsIdentity不能被破译。 –

+0

如果ClaimsIdentity不能被破译,为什么这个信息会返回呢?如果这是从acesDictionary返回的唯一东西,你如何从ClaimsIdentity转到一个人? – Kevin

回答

0

通过技术支持,我找到了一位微软代表,他与我分享了用于映射标识描述符的文档尚不可用,但希望尽快发布。在此期间,有一个端点人行横道身份描述这看起来是这样的:?

GET {}帐户.vssps.visualstudio.com/_apis /身份描述符= {} commaSeparatedDescriptorsList API &版本= {apiVersion }

注意,该呼叫通过SPS {account}.vssps.visualstudio.com,而不是通过您的帐户实例{account}.visualstudio.com

由使用我的例子,它会是这个样子(UUID混淆):

https://xxxxx.vssps.visualstudio.com/_apis/identities?descriptors=Microsoft.TeamFoundation.ServiceIdentity;ffead5b1-5121-4e0e-a439-bbecb4999eba:Build:c4bfb762-a246-46c9-ba9a-7e6c53386b11&api-version=4.0

在你的描述符此外,如果描述符是Microsoft.IdentityModel.Claims.ClaimsIdentity型的,那么你很可能会逃脱了反斜杠,你需要取消转义。例如,如果您有:

“Microsoft.IdentityModel.Claims.ClaimsIdentity; XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX \\ [email protected]

你需要取消这个逃生量,使得它看起来是这样的:

“Microsoft.IdentityModel.Claims.ClaimsIdentity; XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX \ [email protected]

相关问题