You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于Azure AD B2C的多租户应用:如何实现租户级访问授权及客户侧用户级细粒度访问控制?

解决方案:Azure AD B2C多租户应用的客户侧细粒度用户访问管控

这个场景完全支持,而且正好匹配你想要的「我方仅授予租户级访问权限,客户自主管控内部用户」的需求!核心的技术术语包括企业应用程序(Enterprise Application)用户分配要求(User assignment required)服务主体(Service Principal),具体实现步骤如下:

核心原理

当你的应用在客户Azure AD租户中创建服务主体后,默认配置是允许该租户内所有用户登录。通过修改服务主体对应的企业应用设置,客户可以开启「用户分配要求」,强制只有被显式授权的用户/安全组才能访问你的应用——这一步完全由客户租户管理员自主操作,不需要你的组织介入。

客户侧实现步骤(无需我方参与)

客户的Azure AD管理员只需在自己的租户内完成以下操作:

  • 登录Azure门户,进入「企业应用程序」页面,搜索并找到你的应用对应的服务主体(通常以你的应用名称命名)。
  • 进入该企业应用的「属性」页面,将「用户分配要求」选项设置为。这一步是关键,开启后未被分配的用户会被Azure AD直接拦截登录请求。
  • 切换到「用户和组」页面,点击「添加用户/组」,选择需要授权访问你的应用的内部用户或安全组;同时可以移除已分配但不再需要访问的用户/组。

我方应用侧的注意事项

  • 你不需要修改Azure AD B2C的用户流或自定义策略:当客户开启「用户分配要求」后,未授权的用户在尝试从客户Azure AD联合登录时,会直接被客户的Azure AD拒绝,根本无法进入你的B2C登录流程。
  • 如果你的应用需要在内部做额外的权限验证,可以通过Microsoft Graph调用客户租户的API,检查当前用户是否被分配到该服务主体,但一般情况下不需要——Azure AD的拦截已经足够。

补充说明

  • 客户租户内被授权的用户登录后,依然会在你的Azure AD B2C租户中创建消费者账户,但如果客户后续移除了该用户的授权,该用户将无法再登录你的应用,即使B2C中仍存在其账户。
  • 这种管控方式完全符合多租户应用的最佳实践,既保证了租户级的访问授权,又让客户拥有内部用户的细粒度管控权。

内容的提问来源于stack exchange,提问作者jokarl

火山引擎 最新活动