如何通过 keycloak 向 github 企业中的每个用户添加主电子邮件?
Posted
技术标签:
【中文标题】如何通过 keycloak 向 github 企业中的每个用户添加主电子邮件?【英文标题】:How to add primary email to every users in github enterprise via keycloak? 【发布时间】:2021-12-15 17:54:23 【问题描述】:我已经配置了 github 企业。我使用 keycloak 进行身份验证。
注册/登录流程是这样的,
用户从 github 企业单击使用 SAML 登录。
然后他们被重定向到keycloak登录页面。
他们可以在哪里选择 github.com 进行注册。
从 github.com 成功认证后,用户被重定向到 github 企业。
现在已在 keycloak 中创建了一个新用户,用户名为 github.com 用户名和电子邮件地址为 github.com 电子邮件。
但在 github 企业中,用户的用户名是通过解析电子邮件 id 的 @ 之前的第一部分来创建的,即使 github 企业从 keycloak 接收电子邮件 id,用户的电子邮件 id 也不会在 github 企业用户帐户中更新。
用户收到以下通知,要求他们添加一个电子邮件地址。
如果用户不添加他们的电子邮件,他们将不会收到组织邀请、密码重置等事件的电子邮件。
这不是我想要的。我也没有什么用户手动将电子邮件 ID 添加到他们的帐户。
我想让github企业用户的用户名和邮箱和keycloak的一样。
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:我们通过检查浏览器网络中的 /consume 请求,从 keycloak 中提取了 saml 响应到 ghe。当 SAML 响应被解码(使用 samltool.io)时,我们发现 keycloak 没有向 ghe 发送电子邮件属性。
Github 使用以下属性来更新个人资料信息。所以keycloak需要在这个字段指定的变量中发送属性。
我们发现客户端中有一些内置的“映射器”可用,可用于向客户端应用程序发送一些指定的预定属性。
选择您的客户端 -> 映射器 -> 添加内置。选择所需的映射器并单击添加。
打开x500 Email,将“SAML Attribute Name”设置为与github上设置的变量名相同的变量。提供一些属性和友好名称。
现在您将在用户帐户中获得电子邮件地址。
【讨论】:
以上是关于如何通过 keycloak 向 github 企业中的每个用户添加主电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 REST API(PUT 方法)更新 Keycloak 密码?
如何在 KeyCloak 中的签名 JWT 中获取 client_assertion
Docker/Symfony/Reactjs/Keycloak:如何使用分离的 docker-compose 文件从一个容器向另一个容器发出 HTTP 请求?