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

能否通过AAD组为Azure B2C用户授予AAD租户内应用注册的权限?及无来宾用户场景下的替代方案咨询

咱们先逐个拆解你的问题,给出符合生产环境要求的实操方案:

1. 能否将B2C用户添加到主AAD租户的组中?

答案是完全不行。Azure AD B2C租户和你的主AAD租户是完全独立的身份目录——B2C用户的身份数据只存在于B2C租户内部,根本没法跨目录直接加入主AAD的安全组或分配组。主AAD的组仅支持包含本租户的成员(包括来宾用户),而B2C用户不属于主AAD租户的任何用户范畴,所以这个操作没有官方支持的路径。

2. 是否需要修改现有单租户应用的租户类型?

如果想让B2C用户直接访问你的生产Web应用,必须调整应用的租户类型。单租户应用的默认规则是仅允许主AAD租户内的用户(含来宾)登录,无法直接接受来自B2C租户的身份令牌。

不过你可以选择改成多租户应用,这是改动最小的方式:多租户应用允许任何Azure AD租户的用户(包括B2C租户用户,通过配置身份提供者)登录,同时你可以完整保留原有的应用角色+组权限管控逻辑。改成多租户后,你还可以通过配置限制仅允许指定的B2C租户用户访问,避免不必要的外部访问。

3. 无需创建AAD来宾用户的替代方案

下面是几个适配你需求的方案,按对现有应用的改动量从小到大排序:

方案一:转多租户+配置B2C身份提供者

  • 操作步骤:
    1. 在Azure门户中,把现有Web应用的应用注册从“单租户”切换为“多租户”(推荐选“任何组织目录中的账户”,而非包含个人微软账户的选项,更符合企业外部用户场景)。
    2. 在你的B2C租户中创建一个新的应用注册,作为外部用户访问Web应用的客户端入口。
    3. 在Web应用的身份验证设置中,添加B2C租户作为受信任的颁发机构;或者在B2C租户中配置身份提供者,将主AAD的Web应用设为受信任资源。
    4. 权限映射:在B2C租户中创建对应外部用户的组,通过B2C的自定义策略或Graph API,将B2C组映射到Web应用已有的应用角色上(因为主AAD组无法关联B2C用户,所以权限逻辑需要在B2C侧做一层映射)。
  • 优势:对现有应用的核心逻辑几乎无改动,保留原有的权限管控体系,无需处理来宾用户的生命周期问题。

方案二:B2C自定义策略实现联合身份验证

  • 操作步骤:
    1. 保持现有Web应用为单租户,无需修改租户类型。
    2. 在B2C租户中编写自定义策略,实现与主AAD租户的联合登录逻辑——当B2C用户登录时,通过自定义策略向主AAD请求符合Web应用要求的身份令牌,同时将B2C用户的权限信息(比如角色)嵌入令牌声明中。
    3. 配置Web应用接受来自B2C自定义策略颁发的令牌,并验证令牌中的权限声明。
  • 优势:完全不用改动应用的租户类型,适合对租户类型有严格合规要求的场景;缺点是需要编写和维护B2C自定义策略,有一定的学习成本。

方案三:用APIM作为身份验证中间层

  • 操作步骤:
    1. 将现有Web应用接入Azure API Management(APIM),由APIM统一处理外部访问的身份验证。
    2. 在APIM中配置两个身份提供者:主AAD(用于内部员工访问)和B2C(用于外部用户访问)。
    3. 在APIM中设置权限规则,将B2C用户的组或角色映射到Web应用的访问权限上。
    4. 现有Web应用保持单租户状态,只需要接受来自APIM的合法请求即可。
  • 优势:对现有Web应用零改动,所有身份验证和权限映射逻辑都在APIM层处理;适合已经使用APIM的场景,或者需要统一管理内外部用户访问策略的情况。

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

火山引擎 最新活动