如何在Azure External ID (customers)复刻Azure AD B2C的无邀请Entra ID登录及租户限制
问题
我们曾在Azure AD B2C中做如下配置:
- 通过多租户应用将Entra ID配置为身份提供商,允许任意租户的Entra ID用户登录
- 登录后通过技术配置文件调用Azure Function,检查用户租户ID是否在允许列表中,以此决定是否放行登录
该模式无需用户邀请或预注册,仅需用Entra ID账户登录即可,由我们自行处理租户准入逻辑。
如今迁移至Azure External ID (customers)时遇到以下问题:
- 用户必须先被邀请,或完成注册创建客户账户,无法复刻B2C中以Entra ID为身份提供商的即时联合流
- 尝试将Entra ID添加为指向
https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration的自定义OIDC提供商,但External ID的发行者URI验证阻止了此操作
现咨询:能否在Azure External ID (customers)中实现类似旧B2C的模式——允许任意Entra ID用户无需邀请或自助注册即可登录,并由我们自行实现租户限制逻辑(如API调用/声明验证)?或是该功能在External ID中不被支持?
解答
目前Azure External ID (customers)暂不支持完全复刻Azure AD B2C的这种即时联合登录模式,具体限制和替代方案如下:
- 自定义OIDC提供商限制:无法直接将多租户Entra ID(
organizations端点)添加为自定义OIDC身份提供商,因为External ID的发行者URI验证规则不允许使用通用的租户无关端点,仅支持指定单个租户ID的Entra ID端点。 - 用户准入机制限制:External ID (customers)的默认逻辑要求用户必须是已邀请的来宾,或完成自助注册创建客户账户,没有原生的“即时联合后直接放行、无需预创建账户”的流程。
若要实现类似的租户限制逻辑,可采用以下替代方案:
- 指定单个租户的Entra ID身份提供商:为每个需要准入的租户单独配置Entra ID身份提供商(使用对应租户的OIDC端点),但这种方式无法覆盖“任意租户”的需求,仅适用于已知租户列表的场景。
- 自助注册流程嵌入租户验证:启用External ID的自助注册流,在用户通过Entra ID联合登录后,触发自定义API调用(如Azure Function)验证租户ID,若验证通过则完成账户创建并放行;若不通过则拒绝注册请求。这种方式仍需用户完成账户创建步骤,但租户准入逻辑可由你自行控制。
内容的提问来源于stack exchange,提问作者marek_lani
相关产品推荐
相关产品推荐

