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

Unable to map custom claims to Azure AD B2C from custom IDP (KeyCloak) via UserFlows

我的 Azure AD B2C 实例使用带有 OIDC 提供程序 (KeyCloak) 的自定义 IDP。在 KeyCloak 中,每个用户都有一个属性需要映射到 B2C 作为自定义声明。让我们将需要映射的声明称为“skillLevel”。该属性已添加到 KeyCloak 创建的令牌中,我可以验证该字段是否存在且是否正确。

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

在 Azure AD B2C 中,我创建了一个新的自定义用户属性并将其命名为“skillLevel”。在“User Flows”下,我 select 我的“Sign up and sign”政策和“Application claims " select编辑新创建的用户属性“skillLevel”并点击保存。

运行 用户流程和登录过程导致 id 令牌内没有声明。当 Identity Provider Access Token 声明被 selected 并通过用户流程然后解码现在在 id 令牌中传递的 KeyCloak 令牌时,我可以看到该字段技能等级.

我尝试过一些没有成功的事情:

不幸的是,没有任何事情导致声明被映射到 B2C 令牌中。

内置的用户流程甚至有可能吗?还是我运气不好,需要使用自定义策略?如果可能的话,我缺少什么才能正确映射它?

提前致谢。

您需要使用自定义策略。

一键部署here

然后按照此 article 添加您的 IdP。使用输出声明部分映射任何声明。

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