我们有一个复杂的设置:
一个主要的 keycloak 服务器,为我们的 Web 应用程序提供身份验证(称为 KC1)
充当 SAML IDP(称为 KC2)并配置 Google 作为登录提供程序的辅助 keycloak 服务器
KC1 将 KC2 配置为 SAML 提供商。
现在发生的事情是这样的:
现在,由于各种原因,我们在后端 SQL DB 中维护用户名/电子邮件,并且当该 SAML 用户首次登录时,我们需要创建一个新条目。 对于我们尝试过的大多数 SAML idps,当前 keycloak 会话的 UserRepresentation 具有可识别的持久 ID,我们可以轻松映射其他 SAML 属性,如电子邮件、组等。
但是,使用 KC2 和 google,我得到的只是像 G-6baaadeb-7c72-4ee8-ae64-e293359ec1bc 这样的用户名
我尝试为 google idp 添加属性映射器 - 帮助说:
社交提供商用户配置文件 JSON 数据中要从中获取值的字段路径。您可以使用点表示法进行嵌套,使用方括号表示数组索引。例如。 '联系人.地址[0].国家'。
我尝试了姓名、电子邮件、身份证号码 - 没有任何效果。 我找不到任何关于配置文件 JSON 应该是什么样子的信息
KC2 服务器最终会使用正确的电子邮件地址等创建用户条目
在我的 keycloak 用户表示中,我得到类似的东西
"federatedIdentities": [
{
"identityProvider": "my_litte_idp",
"userId": "G-13b51145-5433-43df-9ae1-af2217e80101",
"userName": "g-13b51145-5433-43df-9ae1-af2217e80101"
}
如何让 KC2 将用户 ID 或电子邮件地址添加到其对 KC1 的 SAML 响应中?
提前致谢
你明白了吗?我也有同样的问题。