Microsoft Entra 权限
本文内容
当你注册 Microsoft Entra 应用 时,会向其授予访问各种 API 的权限。 随着需求的变化,可能需要调整这些权限。 本文介绍如何进行此操作。
注意
Microsoft Entra 应用权限仅适用于以下方案:
为组织嵌入内容
通过“主用户”身份验证方法为客户嵌入内容
编辑 Microsoft Entra 应用的权限设置
权限更改可以通过编程方式或在 Azure 门户中进行。
在 Azure 门户中,可以查看应用并对其权限进行更改。
登录到 Azure 门户 。
在页面右上角选择你的帐户,从而选择你的 Microsoft Entra 租户。
选择“应用注册” 。 如果无法看到此选项,请进行搜索。
从“拥有的应用程序”选项卡中,选择你的应用。 该应用程序将在“概述”选项卡中打开,你可以在其中查看应用程序ID 。
选择“查看 API 权限”选项卡。
选择“添加权限”。
要添加权限,请按照以下步骤操作(请注意,GCC 应用的第一步是不同的):
在 Microsoft API 选项卡中,选择“Power BI 服务”。
注意
对于 GCC 应用,选择“我的组织使用的 API”选项卡,然后搜索 Microsoft Power BI 政府社区云或 fc4979e5-0aa5-429f-b13a-5d1365be5566。
选择“委派权限”,然后添加或删除所需的特定权限。
完成后,选择“添加权限”以保存更改。
若要删除权限,请执行以下步骤:
选择权限右侧的省略号 (...)。
选择“删除权限”。
在“删除权限”弹出窗口中,选择“是的,删除“。
若要以编程方式更改 Microsoft Entra 应用权限,你需要获取租户中的现有服务主体(用户)。 有关如何执行该操作的信息,请参阅 servicePrincipal 。
要在获取租户中的所有服务主体,请调用不带 {ID}
的 Get servicePrincipal
API。
使用作为 appId
属性的应用的应用程序 ID 检查服务主体。 (displayName
为可选项。)
Post https://graph.microsoft.com/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://graph.microsoft.com/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
c78a3685-1ce7-52cd-95f7-dc5aea8ec98e 依赖于租户,而不是通用。 此值是 Microsoft Entra ID 中 Power BI 服务 应用程序的 objectId 。 若要从 Azure 门户获取此值,请导航到企业应用程序 > 所有应用程序 ,并搜索“Power BI 服务”。
通过将值分配给 consentType
来向 Microsoft Entra ID 授予应用权限。
Post https://graph.microsoft.com/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();
相关内容