向应用程序授予租户范围的管理员许可
本文介绍如何在 Microsoft Entra ID 中向应用程序授予租户范围的管理员同意。 若要了解如何配置单个用户同意设置,请参阅配置最终用户同意使用应用程序的方式。
向应用程序授予租户范围的管理员同意时,将代表整个组织向应用程序授予所请求的访问权限。 代表组织授予管理员同意是一项敏感操作,可能会允许应用程序的发布者访问某些重要的组织数据,或获得执行高特权操作的权限。 此类操作的示例可能包括:角色管理、对所有邮箱或所有站点的完全访问权限以及完全用户模拟。 因此在授予同意之前,需要仔细查看应用程序请求的权限。
默认情况下,向应用程序授予租户范围的管理员同意会允许所有用户访问应用程序,除非另有限制。 若要限制可登录到应用程序的用户,请将应用配置为要求用户分配,然后将用户或组分配到应用程序。
重要
授予租户范围的管理员同意可能会撤销已授予该应用程序的租户范围的权限。 用户已代表自己授予的权限不会受到影响。
先决条件
若要授予租户范围的管理员同意,你需要作为经授权代表组织同意的用户登录。
若要授予租户范围的管理员同意,需要:
具有以下角色之一的 Microsoft Entra 用户帐户:
- 特权角色管理员,可对请求任何 API 的任何权限的应用授予同意。
- 云应用程序管理员或应用程序管理员,用于为请求任何 API 的任何权限的应用授予同意,除了 Microsoft Graph 应用角色(应用程序权限)。
- 自定义目录角色,包含向应用程序授予权限的权限,用于应用程序所需的权限。
在“企业应用”窗格中授予租户范围的管理员同意
如果应用程序已在租户中预配,则可以通过“企业应用程序”窗格授予租户范围的管理员同意。 例如,如果已至少许可一个用户登录到某个应用程序,则可以在租户中预配该应用。 有关详细信息,请参阅如何以及为何将应用程序添加到 Microsoft Entra ID。
提示
本文中的步骤可能因开始使用的门户而略有不同。
要向“企业应用程序”窗格中列出的应用授予租户范围的管理员同意,请执行以下操作:
- 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
- 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。
- 在“安全性”下选择“权限”。
- 仔细查看应用程序所需的权限。 如果同意应用程序所需的权限,请选择“授予管理员同意”。
在“应用注册”窗格中授予管理员同意
可以在 Microsoft Entra 管理中心中的应用注册处授予租户范围的管理员同意,用于组织已直接在 Microsoft Entra 租户中开发和注册的应用程序。
若要通过“应用注册”授予租户范围的管理员许可:
- 在 Microsoft Entra 管理中心,浏览到“标识”>“应用程序”>“应用注册”>“所有应用程序”。
- 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。
- 在“管理”下,选择“API 权限”。
- 仔细查看应用程序所需的权限。 如果同意,请选择“授予管理员同意”。
构建用于授予租户范围的管理员许可的 URL
使用上一部分所述的任一方法授予租户范围的管理员同意时,Microsoft Entra 管理中心会打开一个窗口,提示授予租户范围的管理员同意。 如果你知道应用程序的客户端 ID(也称为应用程序 ID),则可以生成相同的 URL 来授予租户范围的管理员许可。
租户范围的管理员许可 URL 采用以下格式:
https://login.partner.microsoftonline.cn/{organization}/adminconsent?client_id={client-id}
其中:
{client-id}
是应用程序的客户端 ID(也称为应用 ID)。{organization}
是你要在其中同意应用程序的租户的租户 ID 或任何经验证的域名。 可以使用值organizations
,这将导致同意发生在登录用户的主租户中。
在授予许可之前,始终请仔细查看应用程序请求的权限。
有关构造租户范围的管理员同意 URL 的详细信息,请参阅 Microsoft 标识平台上的管理员同意。
使用 Microsoft Graph PowerShell 为委托的权限授予管理员同意
在本节中,你将向应用程序授予委托的权限。 委托的权限是应用程序代表登录用户访问 API 所需的权限。 权限由资源 API 定义,并授予企业应用程序(即客户端应用程序)。 此同意是代表所有用户授予的。
在以下示例中,资源 API 是对象 ID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
的 Microsoft Graph。 该 Microsoft Graph API 定义了委托的权限 User.Read.All
和 Group.Read.All
。 consentType 为 AllPrincipals
,表示你代表租户中的所有用户表明同意。 客户端企业应用程序的对象 ID 为 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
。
注意
请注意! 以编程方式授予的权限不需要评审或确认。 它们会立即生效。
连接到 Microsoft Graph PowerShell,至少以云应用程序管理员身份登录。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
检索由你的租户应用程序中的 Microsoft Graph(资源应用程序)定义的所有委托权限。 确定需要授予客户端应用程序的委托的权限。 在此示例中,委托的权限为
User.Read.All
和Group.Read.All
Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" -Property Oauth2PermissionScopes | Select -ExpandProperty Oauth2PermissionScopes | fl
通过运行以下请求向客户端企业应用程序授予委托的权限。
$params = @{ "ClientId" = "00001111-aaaa-2222-bbbb-3333cccc4444" "ConsentType" = "AllPrincipals" "ResourceId" = "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1" "Scope" = "User.Read.All Group.Read.All" } New-MgOauth2PermissionGrant -BodyParameter $params | Format-List Id, ClientId, ConsentType, ResourceId, Scope
通过运行以下请求,确认你已在租户范围内授予管理员同意。
Get-MgOauth2PermissionGrant -Filter "clientId eq '00001111-aaaa-2222-bbbb-3333cccc4444' and consentType eq 'AllPrincipals'"
使用 Microsoft Graph PowerShell 为应用程序权限授予管理员同意
在本节中,你将向企业应用程序授予应用程序权限。 应用程序权限是应用程序访问资源 API 所需的权限。 权限由资源 API 定义,并授予企业应用程序(即主体应用程序)。 向应用程序授予对资源 API 的访问权限后,其将作为后台服务或守护程序运行,无需用户登录。 应用程序权限也称为应用角色。
在以下示例中,向 Microsoft Graph 应用程序(ID aaaaaaaa-bbbb-cccc-1111-222222222222
的主体)授予 ID df021288-bdef-4463-88db-98f22de89214
的一个应用角色(应用程序权限),该角色由 ID 11112222-bbbb-3333-cccc-4444dddd5555
的资源 API 公开。
连接到 Microsoft Graph PowerShell,至少以特权角色管理员身份登录。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
检索由你的租户中的 Microsoft Graph 定义的应用角色。 确定需要授予客户端企业应用程序的应用角色。 在此示例中,应用角色 ID 为
df021288-bdef-4463-88db-98f22de89214
。Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" -Property AppRoles | Select -ExpandProperty appRoles |fl
运行以下请求以向主体应用程序授予应用程序权限(应用角色)。
$params = @{
"PrincipalId" ="aaaaaaaa-bbbb-cccc-1111-222222222222"
"ResourceId" = "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
"AppRoleId" = "df021288-bdef-4463-88db-98f22de89214"
}
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId 'aaaaaaaa-bbbb-cccc-1111-222222222222' -BodyParameter $params |
Format-List Id, AppRoleId, CreatedDateTime, PrincipalDisplayName, PrincipalId, PrincipalType, ResourceDisplayName