无法通过UserFlows将自定义声明从自定义IDP(KeyCloak)映射到Azure AD B2C



我的Azure AD B2C实例正在使用带有OIDC提供程序(KeyCloak(的自定义IDP。在KeyCloak中,每个用户都有一个属性,需要映射到B2C中作为自定义声明。让我们调用需要映射的声明">技能级别";。该属性被添加到KeyCloak创建的令牌中,我可以验证该字段是否存在并且正确。

注意:在配置自定义IDP表单(如电子邮件、姓名和id(时,内置声明正确地从KeyCloak映射到Azure AD B2C。我遇到的问题是添加要映射到B2C的自定义用户属性。

在Azure AD B2C中,我创建了一个新的自定义用户属性,并将其命名为">技能级别";。在">用户流";,我选择我的">注册并签署";政策和">申请声明";选择新创建的用户属性">skillLevel";然后点击保存。

运行用户流并完成登录过程不会导致id令牌内没有声明。当选择身份提供程序访问令牌声明并通过用户流,然后解码现在在id令牌中传递的KeyCloak令牌时,我可以看到字段skillLevel

我尝试了一些没有运气的东西:

  • 更新应用程序清单以接受映射声明,并将字段添加到optionalClaimsidToken数组中
  • 尝试下载用户流策略,并将PartnerClaimType属性添加到extension_skillLevelOutputClaim,然后作为自定义策略重新加载。显然,这是被禁止的,也不受支持
  • 更新KeyCloak作用域以将skillLevel属性映射到令牌中的extension_skillLevel明
  • 只是一般的修补

不幸的是,没有任何结果导致索赔被映射到B2C令牌中。

是否有可能使用内置的用户流,或者我运气不好,需要使用自定义策略?如果可能的话,我缺少什么来正确地绘制地图?

提前谢谢。

您需要使用自定义策略。

单击此处即可部署。

然后按照本文添加您的IdP。使用输出声明部分映射到任何声明中。

在依赖方部分中,添加一个输出声明以将声明发布到铸造的令牌中。

最新更新