给定一个组,我如何检索组的 Microsoft.TeamFoundation.Identity(设置安全权限)
Given a Group, how do I retrieve the Microsoft.TeamFoundation.Identity of the Group (to set Security permissions)
TL;DR:如何获取团队组对象的标识?
据我了解,安全 Access Control Entries use Identities to grant and revoke permissions to users and groups. In order to set a permission for something, I need to know that something's Identity. While browsing my ACEs, I found that 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 objects 使用 IdentityUrl
属性 可以直接 link 找到我想要的内容,但我没有看到任何适合群组的内容。 Group 对象确实有 descriptor
属性,但这不适用于像 https://{organization}.vssps.visualstudio.com/_apis/Identities?descriptors={descriptor}
.
这样的 url
为了检索组的安全身份,我需要进行哪些 API 调用(或调用链)?
Sudo_Brendan,
我现在正在研究这方面的 POC,我认为它可能会对您有所帮助。我正在使用 Microsoft.VisualStudio.Services.WebApi 通过 IdentityHttpClient 执行此操作。
我从这里拉取了 NuGet:https://www.nuget.org/packages/Microsoft.TeamFoundationServer.Client/15.131.1
ReadIdentitiesAsync 和 ReadIdentityAsync 是我用来获取描述符的方法。这个简单的代码示例允许您将组添加到 Azure DevOps 中的团队。
ReadIdentitiesAsync 的重载允许更高级的搜索和过滤,因此您可以查找单个用户的电子邮件地址。希望这有帮助。
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 似乎调用这个:
获取:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/Identities?searchFilter=DisplayName&filterValue={groupName}&options=None&queryMembership=None
ReadIdentityAsync 似乎调用这个:
获取:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/Identities/{id}?queryMembership=None
加入群组
PUT:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/identities/{Descriptor}/Members/{id}
不,您不使用 Microsoft.VisualStudio.Services.WebApi。
IdentityHttpClient 仅包含在旧 Client Api.
TL;DR:如何获取团队组对象的标识?
据我了解,安全 Access Control Entries use Identities to grant and revoke permissions to users and groups. In order to set a permission for something, I need to know that something's Identity. While browsing my ACEs, I found that 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 objects 使用 IdentityUrl
属性 可以直接 link 找到我想要的内容,但我没有看到任何适合群组的内容。 Group 对象确实有 descriptor
属性,但这不适用于像 https://{organization}.vssps.visualstudio.com/_apis/Identities?descriptors={descriptor}
.
为了检索组的安全身份,我需要进行哪些 API 调用(或调用链)?
Sudo_Brendan,
我现在正在研究这方面的 POC,我认为它可能会对您有所帮助。我正在使用 Microsoft.VisualStudio.Services.WebApi 通过 IdentityHttpClient 执行此操作。
我从这里拉取了 NuGet:https://www.nuget.org/packages/Microsoft.TeamFoundationServer.Client/15.131.1
ReadIdentitiesAsync 和 ReadIdentityAsync 是我用来获取描述符的方法。这个简单的代码示例允许您将组添加到 Azure DevOps 中的团队。
ReadIdentitiesAsync 的重载允许更高级的搜索和过滤,因此您可以查找单个用户的电子邮件地址。希望这有帮助。
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 似乎调用这个:
获取:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/Identities?searchFilter=DisplayName&filterValue={groupName}&options=None&queryMembership=None
ReadIdentityAsync 似乎调用这个:
获取:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/Identities/{id}?queryMembership=None
加入群组
PUT:https://spsprodeus23.vssps.visualstudio.com/{organization}/_apis/identities/{Descriptor}/Members/{id}
不,您不使用 Microsoft.VisualStudio.Services.WebApi。 IdentityHttpClient 仅包含在旧 Client Api.