Keycloak - 使用 Rest API 验证用户的电子邮件

Posted

技术标签:

【中文标题】Keycloak - 使用 Rest API 验证用户的电子邮件【英文标题】:Keycloak - Verify user's email using Rest API 【发布时间】:2020-09-12 09:47:00 【问题描述】:

我正在尝试创建一个新用户,然后使用 REST API 验证他的电子邮件地址。 为了发送验证邮件,我在 Springboot 中使用了我自己的邮件类,所以我没有调用 keycloak 的 /send-verify-email 端点! 创建用户后,我可以在 keycloak 控制台中看到该用户已创建、启用并且需要验证他的电子邮件地址。

但问题就在这里。如何使用 Keycloak REST API 验证电子邮件?没有用于此目的的端点,我无法更新 UserRepresentation,因为我没有访问令牌。而且没有访问令牌,你不能更新用户,对吧?

所以应该有一些不安全的端点,不需要访问令牌和验证电子邮件,如<userID>/verify-email 左右,但没有。所以我正在寻找替代方案,如何验证用户的电子邮件。

当使用 Keycloak Springboot 客户端(或如何调用它)时,有一些方法可以用于此目的(例如更新没有令牌的用户),但不幸的是我无法使用这个库。

我真的开始讨厌钥匙斗篷了..

谢谢大家的帮助

【问题讨论】:

【参考方案1】:

所以应该有一些不安全的端点,不需要访问令牌和验证电子邮件,如 /verify-email

这确实是不安全的方法 - 任何人都可以验证任何电子邮件。

创建具有适当权限配置的新管理员用户/客户端(需要允许更新用户)并使用它(=您需要登录程序 -> 访问令牌)来更新用户模型(PUT /realm/users/id - emailVerified: true) .当然,这个管理员用户将自己负责确保电子邮件是正确的。

【讨论】:

好的,这是一个很好的答案。你知道我应该添加到这个帐户的权限吗?是否来自领域管理 - 管理用户? 我也面临同样的情况。我们可以使用具有“管理用户”领域权限的客户端,这意味着我们必须将客户端凭据保存在前端吗?

以上是关于Keycloak - 使用 Rest API 验证用户的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

带有 NGINX 代理服务器的 Keycloak 未验证 rest api

需要使用 Keycloak 和 oAuth2 保护普通 Spring REST API 的示例

带有 Keycloak 的 Angular 和 Spring Boot REST API 的 CORS 问题

带有 Keycloak 的 Angular 和 Spring Boot REST API 的 CORS 问题

通过 Keycloak REST API 注销用户不起作用

想要在存在多个凭据的情况下发送 otp 的 Keycloak Rest API 请求格式