向组授予 appRoleAssignment
命名空间:microsoft.graph
使用此 API 将应用角色分配给组。 该组的所有直接成员都将被视为已分配。 若要向组授予应用角色分配,需使用三个标识符:
- principalId:要向其分配应用角色的 组 的 ID。
- resourceId:已定义应用角色的资源 servicePrincipal 的 ID。
- appRoleId:要分配给组的 appRole (在资源服务主体上定义)的 ID。
要使用组来管理对应用程序的访问,可能还需要其他许可证。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
AppRoleAssignment.ReadWrite.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用程序 |
AppRoleAssignment.ReadWrite.All |
HTTP 请求
POST /groups/{groupId}/appRoleAssignments
备注
最佳做法是,建议通过 资源 服务主体的 appRoleAssignedTo 关系(而不是通过分配的用户、组或服务主体的 appRoleAssignments 关系)创建应用角色分配。
| 名称 |
说明 |
| Authorization |
Bearer {token}。必需。 |
| Content-type |
application/json. Required. |
请求正文
在请求正文中,提供 appRoleAssignment 对象的 JSON 表示形式。
下表显示了创建 appRoleAssignment 时所需的属性。 根据需要为 appRoleAssignment 指定其他可写属性。
| 属性 |
类型 |
说明 |
| appRoleId |
Guid |
分配给主体的 应用角色的标识符 (id)。 必须在资源应用程序的服务主体 (resourceId) 上的 appRoles 属性中公开此应用角色。 如果资源应用程序尚未声明任何应用角色,则可以指定默认应用角色 ID 00000000-0000-0000-0000-000000000000,以表示将主体分配给资源应用,但没有任何特定应用角色。 |
| principalId |
Guid |
组的唯一标识符(ID)被授予应用角色。 |
| resourceId |
Guid |
已为其分配的资源 服务主体的唯一标识符 (id)。 |
响应
如果成功,此运营商将在响应正文中返回 201 Created 响应代码和 appRoleAssignment 对象。
示例
请求
下面是一个请求示例。 在此示例中,URL 中的 ID 和 principalId 的值都将是已分配组的 ID。
POST https://graph.microsoft.com/v1.0/groups/7679d9a4-2323-44cd-b5c2-673ec88d8b12/appRoleAssignments
Content-Type: application/json
{
"principalId": "7679d9a4-2323-44cd-b5c2-673ec88d8b12",
"resourceId": "076e8b57-bac8-49d7-9396-e3449b685055",
"appRoleId": "00000000-0000-0000-0000-000000000000"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var appRoleAssignment = new AppRoleAssignment
{
PrincipalId = Guid.Parse("7679d9a4-2323-44cd-b5c2-673ec88d8b12"),
ResourceId = Guid.Parse("076e8b57-bac8-49d7-9396-e3449b685055"),
AppRoleId = Guid.Parse("00000000-0000-0000-0000-000000000000")
};
await graphClient.Groups["{group-id}"].AppRoleAssignments
.Request()
.AddAsync(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
const options = {
authProvider,
};
const client = Client.init(options);
const appRoleAssignment = {
principalId: '7679d9a4-2323-44cd-b5c2-673ec88d8b12',
resourceId: '076e8b57-bac8-49d7-9396-e3449b685055',
appRoleId: '00000000-0000-0000-0000-000000000000'
};
await client.api('/groups/7679d9a4-2323-44cd-b5c2-673ec88d8b12/appRoleAssignments')
.post(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/groups/7679d9a4-2323-44cd-b5c2-673ec88d8b12/appRoleAssignments"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphAppRoleAssignment *appRoleAssignment = [[MSGraphAppRoleAssignment alloc] init];
[appRoleAssignment setPrincipalId:@"7679d9a4-2323-44cd-b5c2-673ec88d8b12"];
[appRoleAssignment setResourceId:@"076e8b57-bac8-49d7-9396-e3449b685055"];
[appRoleAssignment setAppRoleId:@"00000000-0000-0000-0000-000000000000"];
NSError *error;
NSData *appRoleAssignmentData = [appRoleAssignment getSerializedDataWithError:&error];
[urlRequest setHTTPBody:appRoleAssignmentData];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AppRoleAssignment appRoleAssignment = new AppRoleAssignment();
appRoleAssignment.principalId = UUID.fromString("7679d9a4-2323-44cd-b5c2-673ec88d8b12");
appRoleAssignment.resourceId = UUID.fromString("076e8b57-bac8-49d7-9396-e3449b685055");
appRoleAssignment.appRoleId = UUID.fromString("00000000-0000-0000-0000-000000000000");
graphClient.groups("7679d9a4-2323-44cd-b5c2-673ec88d8b12").appRoleAssignments()
.buildRequest()
.post(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewAppRoleAssignment()
principalId := "7679d9a4-2323-44cd-b5c2-673ec88d8b12"
requestBody.SetPrincipalId(&principalId)
resourceId := "076e8b57-bac8-49d7-9396-e3449b685055"
requestBody.SetResourceId(&resourceId)
appRoleId := "00000000-0000-0000-0000-000000000000"
requestBody.SetAppRoleId(&appRoleId)
groupId := "group-id"
result, err := graphClient.GroupsById(&groupId).AppRoleAssignments().Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
Import-Module Microsoft.Graph.Applications
$params = @{
PrincipalId = "7679d9a4-2323-44cd-b5c2-673ec88d8b12"
ResourceId = "076e8b57-bac8-49d7-9396-e3449b685055"
AppRoleId = "00000000-0000-0000-0000-000000000000"
}
New-MgGroupAppRoleAssignment -GroupId $groupId -BodyParameter $params
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
响应
下面是一个响应示例。
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups('7679d9a4-2323-44cd-b5c2-673ec88d8b12')/appRoleAssignments/$entity",
"id": "pNl5diMjzUS1wmc-yI2LEkGgWqFFrFdLhG2Ly2CysL4",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2021-02-19T17:55:08.3369542Z",
"principalDisplayName": "Young techmakers",
"principalId": "7679d9a4-2323-44cd-b5c2-673ec88d8b12",
"principalType": "Group",
"resourceDisplayName": "Yammer",
"resourceId": "076e8b57-bac8-49d7-9396-e3449b685055"
}