默认情况下,在 Microsoft Entra 租户中注册的应用程序可供该租户中成功完成身份验证的所有用户使用。 若要将应用程序限制为一组用户,可以将应用程序配置为要求用户分配。 尝试访问应用程序或服务的用户和服务需要被分配给应用程序,否则这些用户和服务将无法登录或获取访问令牌。
同样,在 多租户 应用程序中,预配应用程序的 Microsoft Entra 租户中的所有用户都可以在其各自的租户中成功进行身份验证后访问该应用程序。
租户管理员和开发人员通常会要求一个应用程序仅限于特定的一组用户或应用(服务)使用。 可以通过两种方法将应用程序限制为仅供特定的一组用户、应用或安全组使用:
- 开发人员可以使用 Azure 基于角色的访问控制(Azure RBAC)等常用授权模式。
- 租户管理员和开发人员可以使用 Microsoft Entra ID 的内置功能。
先决条件
- 一个 Microsoft Entra 用户帐户。 如果还没有帐户,请 免费创建一个帐户。
- Microsoft Entra 租户中注册的应用程序
- 必须是应用程序所有者,或者至少是租户中的 云应用程序管理员 。
支持的应用配置
将应用限制为仅供租户中特定的一组用户、应用或安全组使用的选项适用于以下类型的应用程序:
- 经配置后可以使用基于 SAML 的身份验证进行联合单一登录的应用程序。
- 使用 Microsoft Entra 预身份验证的应用程序代理应用程序。
- 直接在 Microsoft Entra 应用程序平台上生成且使用 OAuth 2.0/OpenID Connect 身份验证的应用程序(前提是用户或管理员已认可该应用程序)。
更新应用以要求用户分配
若要更新应用程序以要求用户分配,你必须是企业应用下的应用程序的所有者,或者至少是 云应用程序管理员。
- 登录到 Microsoft Entra 管理中心。
- 如果有权访问多个租户,请使用顶部菜单中的 “目录 + 订阅 ”筛选器
切换到包含 目录 + 订阅 菜单中的应用注册的租户。
- 浏览到 Entra ID>Enterprise 应用,然后选择 所有应用程序。
- 选择要配置为要求分配的应用程序。 使用窗口顶部的筛选器搜索特定应用程序。
- 在应用程序的“概述”页上的“管理”下,选择“属性” 。
- 找到设置“需要分配吗?”,将其设置为“是”。
- 在顶部栏上选择“保存”。
当应用程序要求分配时,不允许用户同意该应用程序。 即使允许用户同意该应用,也是如此。 请务必向需要授权的应用授予租户范围的管理员许可。
将应用分配给用户和组以限制访问
将应用配置为启用用户分配后,即可继续操作,将应用分配给用户和组。
- 在“ 管理”下,选择 “用户”和“组 ”,然后选择“ 添加用户/组”。
- 在“ 用户”下,选择“ 无”,“ 用户 选择器”窗格随即打开,可在其中选择多个用户和组。
- 添加用户和组后,选择“ 选择”。
- (可选)如果已在应用程序中定义了应用角色,则可以使用“选择角色”选项将应用角色分配给选定的用户和组。
- 选择“分配”以完成将应用分配给用户和组的操作。
- 返回 “用户和组 ”页后,新添加的用户和组将显示在更新的列表中。
通过分配其他服务(客户端应用)限制对应用(资源)的访问
按照本部分中的步骤保护租户的应用到应用身份验证访问。
导航到租户中的“服务主体登录日志”,以查找进行身份验证以访问租户中资源的服务。
使用应用 ID 检查希望管理其访问的租户中资源与客户端应用是否存在服务主体。
Get-MgServicePrincipal ` -Filter "AppId eq '$appId'"
使用应用 ID 创建服务主体(如果不存在):
New-MgServicePrincipal ` -AppId $appId
将客户端应用显式分配到资源应用(此功能仅在 API 中可用,不适用于 Microsoft Entra 管理中心):
$clientAppId = “[guid]” $clientId = (Get-MgServicePrincipal -Filter "AppId eq '$clientAppId'").Id New-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $clientId ` -PrincipalId $clientId ` -ResourceId (Get-MgServicePrincipal -Filter "AppId eq '$appId'").Id ` -AppRoleId "00000000-0000-0000-0000-000000000000"
要求分配资源应用程序,以将访问权限仅限于显示分配的用户或服务。
Update-MgServicePrincipal -ServicePrincipalId (Get-MgServicePrincipal -Filter "AppId eq '$appId'").Id -AppRoleAssignmentRequired:$true
注意
如果不希望为应用程序颁发令牌,或者想要阻止租户中的用户或服务访问应用程序,请为应用程序创建服务主体并 禁用用户登录 。
另请参阅
有关角色和安全组的详细信息,请参阅: