Azure Rest API C#

时间:2019-05-21 20:31:28

标签: c# azure-devops

我有一个SID(Microsoft.TeamFoundation.Identity; S-1-9-1531374245-1204410969-2402986413-2179508616-0-0-0-0-1)并且我具有使用Azure DevOps Security的ACL REST API。我想做的是查找与此相关的用户(用户名或电子邮件),但我似乎找不到正确的API调用。有人尝试这样做吗? PS上面的SID是伪造的,但我将其作为我要查找的内容的示例。

我尝试使用图形API查找用户并向其他方向发展。但是我一直无法找到一种方法来为该方向的用户创建SID。如果可以的话,我将可以在访问控制列表的描述符中强行搜索SID。并不是我真正想做的,但如果这是我接受的唯一方法。

如果有帮助,我可以描述一下我要做什么:

  • 我们管理着70多个团队项目
  • 我们需要授予质量检查经理小组的访问权限,以便在董事会上处理共享查询。
  • 我们通过单击“ Board”>“查询”>“共享查询”>…>“安全性”来手动执行此操作
  • 然后我们添加组,然后为该组添加“允许贡献者”权限
  • 我们希望使用Azure DevOps Rest API以编程方式执行以下步骤
  • 我需要在图形用户和SecurityNamespace中ACL的ACE条目中列出的SID之间进行转换,以获取查询权限

1 个答案:

答案 0 :(得分:1)

Kevin's answer here包含有关身份调用的更多详细信息。

您可以调用一个身份api进行翻译。您发送整个描述符或描述符列表,它将返回条目。包含的是主体的显示名称。

必须有一种更好的方法来获取原始数据,但这是一个示例powershell ...

 $namespaces = Invoke-RestMethod -Method get -Headers $securityHeader -Uri 'https://dev.azure.com/<Your Account>/_apis/securitynamespaces/?api-version=5.1'
 $projectsGuid = <The GUID for Project from the $namespaces>
 $projectACLs = Invoke-RestMethod -Method Get -Headers $securityHeader -Uri "https://dev.azure.com/<Your Account>/_apis/accesscontrollists/$projectsGuid/?api-version=5.1&recurse=true"

 $projectACLs.value | % {
     $project = $_
     $props = Get-Member -InputObject $project.acesDictionary -MemberType NoteProperty
     $props | % {
         Invoke-RestMethod -Method Get -Headers $securityHeader -Uri "https://vssps.dev.azure.com/<Your Account>/_apis/identities?descriptors=$($_.Name)"
     }
 }