电子邮件声明覆盖 keycloak 中的用户名

Email claim overrides username in keycloak

我已经编写了自定义 OIDC 提供程序并将其连接到 keycloak。 通过我的提供商首次登录后,系统会要求用户输入用户名、电子邮件、名字和姓氏 (first-broker-login-flow)。

通常,用户名会预先填写 'sub' 声明中的内容。 但是在发送 'email' 声明时,用户名会预先填写电子邮件。

如何在发送 'email' 声明的同时使用电子邮件以外的其他内容预填充用户名?

到目前为止,我已经尝试发送 'name'、'username' 和 'preferred_username' 声明 - 没有成功。

我发现 IdpReviewProfileAuthenticator 检查 isRegistrationEmailAsUsername()。 所以我在我的领域设置中停用了 "Login with email" - 没有成功。

keycloak 有没有办法不使用 'email' 用户名声明?

我找到了解决方法。在 keycloak 中,我为我的 oidc 提供程序创建了一个 "Username Template Importer"-mapper,并将 template-value 设置为 ${CLAIM.sub}

在我看来,这不是最好的解决方案。 但它一直有效,直到我想出更好的方法...