如何使用 Azure AD 图形 API 创建新的应用角色分配



>我正在尝试弄清楚如何使用Azure AD Graph API创建新appRoleAssignment。(较新的 Microsoft Graph 似乎尚不支持创建应用角色分配(。我想使用默认角色。

var assignment = new Dictionary<string, string>();
assignment["id"] = "00000000-0000-0000-0000-000000000000";
assignment["principalId"] = "user-guid";
assignment["resourceId"] = "service-principal-guid";
var url = "https://graph.windows.net/{tenant.onmicrosoft.com}/servicePrinciapls/{service-principal-guid}/appRoleAssignments";

我还尝试发布到:

var url = "https://graph.windows.net/{tenant.onmicrosoft.com}/appRoleAssignments";

我正在POST数据,希望创建作业,但它给出了 404 错误。

assignment字典将转换为 JSON 并发布。

在此回答中,我们讨论了为用户GET应用角色分配的终结点。同一终结点是创建新应用角色分配时POST的终结点:

POST https://graph.windows.net/{tenant-id}/users/{id}/appRoleAssignments?api-version=1.6
...
{
"principalId":"{user-object-id}",
"resourceId":"{service-principal-object-id}",
"id":"00000000-0000-0000-0000-000000000000"    
}

(在上面的示例中,我们使用00000000-0000-0000-0000-000000000000作为应用角色 ID,因为我们想要创建一个默认分配(即"无角色"(。如果我们想将用户分配给特定的应用角色,这将对应于ServicePrincipal对象中AppRoleid

我们需要使用用户实体为用户创建 appRoleAssignment,而不是使用 servicePrincipal 集合。下面是一个示例供您参考:

POST:https://graph.windows.net/{tenant}/users/{userObjectId}/appRoleAssignments?api-version=1.6 
authorization: Bearer {access_token}
Content-Type: application/json
{
"id":"00000000-0000-0000-0000-000000000000",
"resourceId":"{servicePrincipId}",
"principalId":"{userObjectId}"    
}