注册 Microsoft Entra 应用时,可以向其授予访问各种 API 的权限。 随着需求的变化,可能需要调整这些权限。 本文将向您介绍如何做。
注释
Microsoft Entra 应用权限仅适用于以下方案:
编辑Microsoft Entra 应用的权限设置
可以通过编程方式或在 Azure 门户中进行权限更改。
在 Azure 门户中,可以查看应用并对其权限进行更改。
登录到 Azure 门户。
在页面右上角选择您的帐户以选择 Microsoft Entra 租户。
选择“应用注册”。 如果无法看到此选项,请进行搜索。
从 “拥有的应用程序 ”选项卡中,选择你的应用。 应用程序将在“ 概述 ”选项卡中打开,可在其中查看 应用程序 ID。
选择“ 查看 API 权限 ”选项卡。
选择“添加权限”。
若要添加权限,请执行以下步骤(请注意,GCC 应用的第一步不同):
在 “Microsoft API ”选项卡中,选择 “Power BI 服务”。
注释
对于 GCC 应用,选择 组织使用的 API 选项卡,然后搜索 Microsoft Power BI 政府社区云 OR fc4979e5-0aa5-429f-b13a-5d1365be5566。
选择 “委派的权限 ”,然后添加或删除所需的特定权限。
完成后,选择“ 添加权限 ”以保存更改。
若要删除权限,请执行以下步骤:
选择权限右侧的省略号(“...”)。
选择“删除权限”。
在 “删除权限 ”弹出窗口中,选择“ 是”,删除。
若要以编程方式更改Microsoft Entra 应用权限,需要获取租户中的现有服务主体(用户)。 有关如何执行此操作的信息,请参阅 servicePrincipal。
若要获取租户中的所有服务主体,请调用 Get servicePrincipal API,而不带 {ID}。
使用应用程序的 应用程序 ID 作为 appId 属性检查服务主体身份。 (displayName 是可选的。)
Post https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"accountEnabled" : true,
"appId" : "{App_Client_ID}",
"displayName" : "{App_DisplayName}"
}
通过将以下值之一分配给以下值 consentType,向应用授予 Power BI 权限:
Post https://microsoftgraph.chinacloudapi.cn/v1.0/OAuth2PermissionGrants HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"clientId":"{Service_Plan_ID}",
"consentType":"AllPrincipals",
"resourceId":"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"scope":"Dataset.ReadWrite.All Dashboard.Read.All Report.Read.All Group.Read Group.Read.All Content.Create Metadata.View_Any Dataset.Read.All Data.Alter_Any",
"expiryTime":"2018-03-29T14:35:32.4943409+03:00",
"startTime":"2017-03-29T14:35:32.4933413+03:00"
}
注释
- 如果使用 主用户,若要避免Microsoft Entra ID 提示你同意,则需要向主帐户授予权限。
-
resourceId依赖于租户,而不是通用的。 其值为 Microsoft Entra ID 中 Power BI 服务应用程序的 objectId。 若要从 Azure 门户获取此值,请导航到 企业应用程序 > “所有应用程序”,然后搜索 Power BI 服务。
通过向 consentType 分配一个值,为应用授予 Microsoft Entra ID 的权限。
Post https://microsoftgraph.chinacloudapi.cn/v1.0/OAuth2PermissionGrants HTTP/1.1
Authorization: Bearer ey..qw
Content-Type: application/json
{
"clientId":"{Service_Plan_ID}",
"consentType":"AllPrincipals",
"resourceId":"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"scope":"User.Read Directory.AccessAsUser.All",
"expiryTime":"2018-03-29T14:35:32.4943409+03:00",
"startTime":"2017-03-29T14:35:32.4933413+03:00"
}
还可以使用 C# 更改 Microsoft Entra 应用权限。 有关详细信息,请参阅 oAuth2PermissionGrant API。 如果你正在考虑自动执行某些流程,则此方法非常有用。
var graphClient = GetGraphClient();
currentState.createdApp = await graphClient.Applications
.Request()
.AddAsync(application);
System.Threading.Thread.Sleep(2000);
var passwordCredential = new PasswordCredential
{
DisplayName = "Client Secret Created in C#"
};
currentState.createdSecret = await graphClient.Applications[currentState.createdApp.Id]
.AddPassword(passwordCredential)
.Request()
.PostAsync();
var servicePrincipal = new ServicePrincipal
{
AppId = currentState.createdApp.AppId
};
currentState.createdServicePrincipal = await graphClient.ServicePrincipals
.Request()
.AddAsync(servicePrincipal);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
// Use oAuth2PermissionGrant to change permissions
var oAuth2PermissionGrant = await graphClient.Oauth2PermissionGrants["{id}"]
.Request()
.GetAsync();
相关内容