给定一个组,如何检索组的Microsoft.TeamFoundation.Identity(设置安全权限)

问题描述 投票:0回答:1

TL; DR:我如何获得团队组对象的身份?

根据我的理解,安全性Access Control Entries使用Identities授予和撤消对用户和组的权限。为了设置某事物的许可,我需要知道某事物的身份。在浏览我的ACE时,我发现Team Groups被赋予了Microsoft.TeamFoundation.Identity引用,ACE记录类似于:

{
  "Microsoft.TeamFoundation.Identity;X-X-X-XXXX...": {
    "descriptor": "Microsoft.TeamFoundation.Identity;X-X-X-XXXX...",
    "allow": 0
    "deny": 0
  }
}

可以从https://{organization}.vssps.visualstudio.com/_apis/Identities查询这些身份......但是我不知道如何在团队组(例如,[MyTeamProject]\\Contributors)中检索如何检索该团队组的唯一身份。 Team objectsIdentityUrl属性有直接联系,但我没有看到任何可以很好地映射群组的内容。 Group对象确实具有descriptor属性,但这不适用于像https://{organization}.vssps.visualstudio.com/_apis/Identities?descriptors={descriptor}这样的网址。

为了检索组的安全身份,我需要做什么API调用(或调用链)?

azure-devops azure-devops-rest-api
1个回答
0
投票

Sudo_Brendan,

我现在正在通过这个POC工作,并认为它可能对你有所帮助。我正在使用Microsoft.VisualStudio.Services.WebApi与IdentityHttpClient一起执行此操作。

我从这里拉出了NuGet:https://www.nuget.org/packages/Microsoft.TeamFoundationServer.Client/15.131.1

ReadIdentitiesAsync和ReadIdentityAsync是我用来获取描述符的方法。这个简单的代码示例允许您将组添加到Azure DevOps中的团队。

读取身份异步的重载允许更高级的搜索和过滤,因此您可以查找单个用户的电子邮件地址。希望这可以帮助。

    public async Task AddGroupToTeam(WebApiTeam team, params string[] groups)
    {            
        var client = await GetConnectedClient<IdentityHttpClient>();
        var tasks = new List<Task>();

        foreach (var group in groups)
        {
            var result = await client.ReadIdentitiesAsync(IdentitySearchFilter.DisplayName, group);

            var teamIdentity = await client.ReadIdentityAsync(team.Id);
            var userIdentity = result.First();

            tasks.Add(client.AddMemberToGroupAsync(teamIdentity.Descriptor, userIdentity.Id));
        }

        Task.WaitAll(tasks.ToArray());
    }

ReadIdentitiesAsync似乎称之为:

GET:https://spsprodeus23.vssps.visualstudio.com/ {organization} / _ apis / Identities?searchFilter = DisplayName&filterValue = {groupName}&options = None&queryMembership = None

ReadIdentityAsync似乎称之为:

GET:https://spsprodeus23.vssps.visualstudio.com/ {organization} / _ apis / Identities / {id}?queryMembership = None

添加到组

PUT:https://spsprodeus23.vssps.visualstudio.com/ {organization} / _ apis / identities / {Descriptor} / Members / {id}

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