为服务主体授予 appRoleAssignment
命名空间:microsoft.graph
将资源服务主体的应用角色,分配给用户、组或客户端服务主体。
分配给服务主体的应用角色也被称为应用程序权限。 应用程序权限可以通过应用角色分配直接授予,或通过协议体验授予。
若要授予应用角色分配,需使用三个标识符:
principalId: 用户 的 id,组 或要向其分配应用程序角色的客户端 servicePrincipal。
resourceId:已定义应用角色的资源 servicePrincipal 的 id。
appRoleId: appRole 中的 id来分配给用户、组或服务主体。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限。
| 权限类型 |
权限(从最低特权到最高特权) |
| 委派(工作或学校帐户) |
AppRoleAssignment.ReadWrite.All 和 Application.Read.All、AppRoleAssignment.ReadWrite.All 和 Directory.Read.All、Application.ReadWrite.All、Directory.ReadWrite.All |
| 委派(个人 Microsoft 帐户) |
不支持。 |
| 应用程序 |
AppRoleAssignment.ReadWrite.All 和 Application.Read.All、AppRoleAssignment.ReadWrite.All 和 Directory.Read.All、Application.ReadWrite.All、Directory.ReadWrite.All |
HTTP 请求
POST /servicePrincipals/{id}/appRoleAssignedTo
| 名称 |
说明 |
| Authorization |
Bearer {token}。必需。 |
| Content-type |
application/json. Required. |
请求正文
在请求正文中,提供 appRoleAssignment 对象的 JSON 表示形式。
响应
如果成功,此运营商将在响应正文中返回 201 Created 响应代码和 appRoleAssignment 对象。
示例
请求
下面是一个请求示例。
POST https://graph.microsoft.com/v1.0/servicePrincipals/9028d19c-26a9-4809-8e3f-20ff73e2d75e/appRoleAssignedTo
Content-Type: application/json
{
"principalId": "33ad69f9-da99-4bed-acd0-3f24235cb296",
"resourceId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e",
"appRoleId": "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var appRoleAssignment = new AppRoleAssignment
{
PrincipalId = Guid.Parse("33ad69f9-da99-4bed-acd0-3f24235cb296"),
ResourceId = Guid.Parse("9028d19c-26a9-4809-8e3f-20ff73e2d75e"),
AppRoleId = Guid.Parse("ef7437e6-4f94-4a0a-a110-a439eb2aa8f7")
};
await graphClient.ServicePrincipals["{servicePrincipal-id}"].AppRoleAssignedTo
.Request()
.AddAsync(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
const options = {
authProvider,
};
const client = Client.init(options);
const appRoleAssignment = {
principalId: '33ad69f9-da99-4bed-acd0-3f24235cb296',
resourceId: '9028d19c-26a9-4809-8e3f-20ff73e2d75e',
appRoleId: 'ef7437e6-4f94-4a0a-a110-a439eb2aa8f7'
};
await client.api('/servicePrincipals/9028d19c-26a9-4809-8e3f-20ff73e2d75e/appRoleAssignedTo')
.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:@"/servicePrincipals/9028d19c-26a9-4809-8e3f-20ff73e2d75e/appRoleAssignedTo"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphAppRoleAssignment *appRoleAssignment = [[MSGraphAppRoleAssignment alloc] init];
[appRoleAssignment setPrincipalId:@"33ad69f9-da99-4bed-acd0-3f24235cb296"];
[appRoleAssignment setResourceId:@"9028d19c-26a9-4809-8e3f-20ff73e2d75e"];
[appRoleAssignment setAppRoleId:@"ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"];
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("33ad69f9-da99-4bed-acd0-3f24235cb296");
appRoleAssignment.resourceId = UUID.fromString("9028d19c-26a9-4809-8e3f-20ff73e2d75e");
appRoleAssignment.appRoleId = UUID.fromString("ef7437e6-4f94-4a0a-a110-a439eb2aa8f7");
graphClient.servicePrincipals("9028d19c-26a9-4809-8e3f-20ff73e2d75e").appRoleAssignedTo()
.buildRequest()
.post(appRoleAssignment);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewAppRoleAssignment()
principalId := "33ad69f9-da99-4bed-acd0-3f24235cb296"
requestBody.SetPrincipalId(&principalId)
resourceId := "9028d19c-26a9-4809-8e3f-20ff73e2d75e"
requestBody.SetResourceId(&resourceId)
appRoleId := "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"
requestBody.SetAppRoleId(&appRoleId)
servicePrincipalId := "servicePrincipal-id"
result, err := graphClient.ServicePrincipalsById(&servicePrincipalId).AppRoleAssignedTo().Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
Import-Module Microsoft.Graph.Applications
$params = @{
PrincipalId = "33ad69f9-da99-4bed-acd0-3f24235cb296"
ResourceId = "9028d19c-26a9-4809-8e3f-20ff73e2d75e"
AppRoleId = "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7"
}
New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $servicePrincipalId -BodyParameter $params
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档。
在此示例中,{id} 和 {resourceId-value} 是资源服务主体的 id,{principalId} 是分配的用户、组或客户端服务主体的 id。
响应
下面是一个响应示例。
注意: 为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('9028d19c-26a9-4809-8e3f-20ff73e2d75e')/appRoleAssignedTo/$entity",
"id": "-WmtM5na7Uus0D8kI1yylpU9Mdo0Pb9OoBJvd3T5eKc",
"deletedDateTime": null,
"appRoleId": "ef7437e6-4f94-4a0a-a110-a439eb2aa8f7",
"createdDateTime": "2021-02-15T16:14:59.8643039Z",
"principalDisplayName": "Parents of Contoso",
"principalId": "33ad69f9-da99-4bed-acd0-3f24235cb296",
"principalType": "Group",
"resourceDisplayName": "Fabrikam App",
"resourceId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e"
}