如何在Entra External ID中实现外部OIDC身份提供商声明处理?
问题
我当前使用Azure B2C自定义策略,正考虑采用新款Entra External ID产品作为替代方案。在自定义策略中,我可利用外部OIDC身份提供商(IdP)返回的声明完成多种操作,例如通过以下自定义策略片段(外部OIDC身份提供商ClaimsProvider内的OutputClaim),将外部IdP的groups声明映射为自定义的authzGroups声明:
<OutputClaim ClaimTypeReferenceId="authzGroups" PartnerClaimType="groups" />
具体应用场景包括:
- 将
authzGroups声明作为OutputClaim传递给依赖方(应用程序); - 结合声明转换与编排步骤前置条件,若
groups返回值不匹配预定义组ID集合,则向用户展示错误页面而非颁发令牌。
请问在Entra External ID中,如何实现类似的外部OIDC身份提供商声明操作?
解决方案
场景1:映射外部IdP声明并传递给依赖方
在Entra External ID里,通过用户流配置就能搞定声明映射和传递:
- 先创建自定义声明
authzGroups:- 打开目标用户流的「用户属性」页面,点击「添加属性」,选择「自定义属性」,创建名为
authzGroups的属性(选字符串集合类型,适配多组场景)。
- 打开目标用户流的「用户属性」页面,点击「添加属性」,选择「自定义属性」,创建名为
- 配置外部OIDC身份提供商的声明映射:
- 进入外部OIDC IdP的配置页,找到「声明映射」区域。
- 添加映射规则:把外部IdP返回的
groups声明,映射到刚创建的authzGroups自定义声明。
- 配置应用程序声明:
- 在用户流的「应用程序声明」页面,勾选
authzGroups,这样该声明就会被包含在发给依赖方的令牌里。
- 在用户流的「应用程序声明」页面,勾选
场景2:基于外部组声明做授权校验
用Entra External ID的自定义规则实现前置校验:
- 先完成场景1的配置,确保
authzGroups能正确获取外部IdP的组数据。 - 添加授权规则:
- 进入用户流的「自定义规则」页面,新建一条规则,类型选「授权规则」,触发时机设为「颁发令牌之前」。
- 编写规则逻辑:检查
authzGroups是否包含你预定义的组ID(比如["allowed-group-1", "allowed-group-2"])。 - 配置不匹配时的动作:选择「阻止登录并显示错误消息」,自定义提示内容(比如「你没有访问权限,请联系管理员」)。
- 保存启用规则后,用户登录时如果外部IdP返回的组不在允许列表里,会直接跳错误页面,不会发令牌。
内容的提问来源于stack exchange,提问作者Bandz
相关产品推荐
相关产品推荐

