向用户授予 appRoleAssignment
命名空间:microsoft.graph
使用此 API 将应用角色分配给用户。 若要向用户授予应用角色分配,需使用三个标识符:
principalId
:要向其分配应用角色的用户的 id
。
resourceId
:已定义应用角色的资源 servicePrincipal
的 id
。
appRoleId
:要分配给用户的 appRole
(在资源服务主体上定义)的 id
。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
权限类型 |
权限(从最低特权到最高特权) |
委派(工作或学校帐户) |
AppRoleAssignment.ReadWrite.All |
委派(个人 Microsoft 帐户) |
不支持。 |
应用程序 |
AppRoleAssignment.ReadWrite.All |
HTTP 请求
POST /users/{id | userPrincipalName}/appRoleAssignments
备注
最佳做法是,建议通过 资源 服务主体的 appRoleAssignedTo
关系(而不是通过分配的用户、组或服务主体的 appRoleAssignments
关系)创建应用角色分配。
名称 |
说明 |
Authorization |
Bearer {token}。必需。 |
Content-Type |
application/json. Required. |
请求正文
在请求正文中,提供 appRoleAssignment 对象的 JSON 表示形式。
响应
如果成功,此运营商将在响应正文中返回 201 Created
响应代码和 appRoleAssignment 对象。
示例
请求
下面是一个请求示例。
POST https://graph.microsoft.com/v1.0/users/cde330e5-2150-4c11-9c5b-14bfdc948c79/appRoleAssignments
Content-Type: application/json
{
"principalId": "cde330e5-2150-4c11-9c5b-14bfdc948c79",
"resourceId": "8e881353-1735-45af-af21-ee1344582a4d",
"appRoleId": "00000000-0000-0000-0000-000000000000"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var appRoleAssignment = new AppRoleAssignment
{
PrincipalId = Guid.Parse("cde330e5-2150-4c11-9c5b-14bfdc948c79"),
ResourceId = Guid.Parse("8e881353-1735-45af-af21-ee1344582a4d"),
AppRoleId = Guid.Parse("00000000-0000-0000-0000-000000000000")
};
await graphClient.Users["{user-id}"].AppRoleAssignments
.Request()
.AddAsync(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
const options = {
authProvider,
};
const client = Client.init(options);
const appRoleAssignment = {
principalId: 'cde330e5-2150-4c11-9c5b-14bfdc948c79',
resourceId: '8e881353-1735-45af-af21-ee1344582a4d',
appRoleId: '00000000-0000-0000-0000-000000000000'
};
await client.api('/users/cde330e5-2150-4c11-9c5b-14bfdc948c79/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:@"/users/cde330e5-2150-4c11-9c5b-14bfdc948c79/appRoleAssignments"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphAppRoleAssignment *appRoleAssignment = [[MSGraphAppRoleAssignment alloc] init];
[appRoleAssignment setPrincipalId:@"cde330e5-2150-4c11-9c5b-14bfdc948c79"];
[appRoleAssignment setResourceId:@"8e881353-1735-45af-af21-ee1344582a4d"];
[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("cde330e5-2150-4c11-9c5b-14bfdc948c79");
appRoleAssignment.resourceId = UUID.fromString("8e881353-1735-45af-af21-ee1344582a4d");
appRoleAssignment.appRoleId = UUID.fromString("00000000-0000-0000-0000-000000000000");
graphClient.users("cde330e5-2150-4c11-9c5b-14bfdc948c79").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 := "cde330e5-2150-4c11-9c5b-14bfdc948c79"
requestBody.SetPrincipalId(&principalId)
resourceId := "8e881353-1735-45af-af21-ee1344582a4d"
requestBody.SetResourceId(&resourceId)
appRoleId := "00000000-0000-0000-0000-000000000000"
requestBody.SetAppRoleId(&appRoleId)
userId := "user-id"
result, err := graphClient.UsersById(&userId).AppRoleAssignments().Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
Import-Module Microsoft.Graph.Applications
$params = @{
PrincipalId = "cde330e5-2150-4c11-9c5b-14bfdc948c79"
ResourceId = "8e881353-1735-45af-af21-ee1344582a4d"
AppRoleId = "00000000-0000-0000-0000-000000000000"
}
New-MgUserAppRoleAssignment -UserId $userId -BodyParameter $params
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
请注意,本例中,请求 URL (cde330e5-2150-4c11-9c5b-14bfdc948c79
) 中用作用户 ID 的值与正文中的 principalId 属性相同。
响应
下面是一个响应示例。
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('cde330e5-2150-4c11-9c5b-14bfdc948c79')/appRoleAssignments/$entity",
"id": "5TDjzVAhEUycWxS_3JSMeY-oHkjrWvBKi7aIZwYGQzg",
"deletedDateTime": null,
"appRoleId": "00000000-0000-0000-0000-000000000000",
"createdDateTime": "2021-02-15T10:31:53.5164841Z",
"principalDisplayName": "Megan Bowen",
"principalId": "cde330e5-2150-4c11-9c5b-14bfdc948c79",
"principalType": "User",
"resourceDisplayName": "dxprovisioning-graphapi-client",
"resourceId": "8e881353-1735-45af-af21-ee1344582a4d"
}