通过 templateRoleId 将成员添加到目录角色全局读取器

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

我尝试将全局读者角色添加到应用程序注册中,但不知何故,我下面的代码无法正常工作,结果计数始终为 0。

var directoryRoles = await graphServiceClient.DirectoryRoleTemplates.GetAsync();
var result = await graphServiceClient.DirectoryRoles.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Filter = $"roleTemplateId eq '{tmplRole!.Id}'";
});
var Role = result.Value!.FirstOrDefault();

result.count
是0,我不明白为什么会这样?全局读取器显然存在,并且
tmplRole.Id
包含一个 Id。

同样令我沮丧的是

var directoryRoles = await graphServiceClient.DirectoryRoles.GetAsync();
只会显示激活的角色?

c# azure microsoft-graph-api
1个回答
0
投票

是的,

/directoryRoles
仅返回已激活的角色,如文档中所述。

Microsoft 建议使用RBAC API。如果您知道

templateRoleId
,您可以使用 RBAC API 并将角色分配给应用程序

var requestBody = new UnifiedRoleAssignment
{
    OdataType = "#microsoft.graph.unifiedRoleAssignment",
    RoleDefinitionId = $"{tmplRole!.Id}",
    PrincipalId = $"{servicePrincipalId}",
    DirectoryScopeId = "/",
};

var result = await graphServiceClient.RoleManagement.Directory.RoleAssignments.PostAsync(requestBody);
© www.soinside.com 2019 - 2024. All rights reserved.