获取谁有权访问 git 个存储库的列表
Get a list of who has what access to git repositories
使用 VSTS APIs,我正在尝试获取一份列表,其中包含谁对 VSTS 中的每个 git 存储库具有哪些访问权限。
我有 Git 的安全 namespaceId,我将此 namespaceId 传递给此处描述的安全 -> 访问控制列表 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
深入研究响应,我可以看到它列出了每个 repo 的权限,以及 ref 和标签。
每个对象包含 "acesDictionary",它本身是一个对象,其键如下所示:
Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\emailaddress@example.com
如何破译 ClaimsIdentity?我首先想到的是,ClaimsIdentity 中的 UUID 是我的 VSTS 项目中用户的 UUID,但事实并非如此。我知道那里有电子邮件地址,所以我想我可以使用它,但现在我很好奇 ClaimsIdentity 中的 UUID 代表什么。 VSTS API 文档没有提到这一点。
安全 -> 访问控制列表是否是我应该查看的正确位置?我的主要目标是尝试获取谁有权访问 VSTS git 存储库的列表。
通过技术支持,我联系到了一位 Microsoft 代表,他告诉我映射身份描述符的文档尚不可用,但希望很快就会发布。与此同时,人行横道身份描述符有一个端点,看起来像这样:
GET {account}.vssps.visualstudio.com/_apis/identities?descriptors={commaSeparatedDescriptorsList}&api-version={apiVersion}
请注意,此调用是通过 SPS {account}.vssps.visualstudio.com
而不是通过您的帐户实例 {account}.visualstudio.com
使用我的示例,它看起来像这样(uuid 混淆):
此外,如果描述符的类型为 Microsoft.IdentityModel.Claims.ClaimsIdentity
,那么您可能已经在描述符中转义了反斜杠,您需要取消转义。例如,如果您有:
"Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\someone@example.com"
您需要取消转义此描述符,使其看起来像这样:
"Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\someone@example.com"
使用 VSTS APIs,我正在尝试获取一份列表,其中包含谁对 VSTS 中的每个 git 存储库具有哪些访问权限。
我有 Git 的安全 namespaceId,我将此 namespaceId 传递给此处描述的安全 -> 访问控制列表 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
深入研究响应,我可以看到它列出了每个 repo 的权限,以及 ref 和标签。
每个对象包含 "acesDictionary",它本身是一个对象,其键如下所示:
Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\emailaddress@example.com
如何破译 ClaimsIdentity?我首先想到的是,ClaimsIdentity 中的 UUID 是我的 VSTS 项目中用户的 UUID,但事实并非如此。我知道那里有电子邮件地址,所以我想我可以使用它,但现在我很好奇 ClaimsIdentity 中的 UUID 代表什么。 VSTS API 文档没有提到这一点。
安全 -> 访问控制列表是否是我应该查看的正确位置?我的主要目标是尝试获取谁有权访问 VSTS git 存储库的列表。
通过技术支持,我联系到了一位 Microsoft 代表,他告诉我映射身份描述符的文档尚不可用,但希望很快就会发布。与此同时,人行横道身份描述符有一个端点,看起来像这样:
GET {account}.vssps.visualstudio.com/_apis/identities?descriptors={commaSeparatedDescriptorsList}&api-version={apiVersion}
请注意,此调用是通过 SPS {account}.vssps.visualstudio.com
而不是通过您的帐户实例 {account}.visualstudio.com
使用我的示例,它看起来像这样(uuid 混淆):
此外,如果描述符的类型为 Microsoft.IdentityModel.Claims.ClaimsIdentity
,那么您可能已经在描述符中转义了反斜杠,您需要取消转义。例如,如果您有:
"Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\someone@example.com"
您需要取消转义此描述符,使其看起来像这样:
"Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\someone@example.com"