【发布时间】:2021-12-24 04:20:58
【问题描述】:
我有一个密钥斗篷服务器和服务,它使用它进行身份验证。 我想允许用户更改他们的密码。 但从文档中不清楚电子邮件操作“更新密码”如何在启用 LDAP 的情况下工作。 https://www.keycloak.org/docs/latest/server_admin/#_user-storage-federation
"默认情况下,Keycloak 会将用户从 LDAP 导入到本地 Keycloak 用户数据库。用户的这个副本要么是同步的 按需,或通过定期后台任务。唯一的例外 这就是密码的同步。密码永远不会 进口的。他们的验证总是委托给 LDAP 服务器”
在编辑模式部分
"WRITABLE 用户名、电子邮件、名字、姓氏和其他映射的 属性和密码都可以更新并同步 自动使用您的 LDAP 存储。”
我在“用户联合”选项卡中的设置 -> LDAP 是:
"Import Users": "ON",
"Edit Mode": "None"
Sync Settings
"Periodic Full Sync": "Off",
"Peroidic Changed Users Sync": "On"
In the Section "Mappers"
"password" param is not listed.
那么,如果我们应用到用户电子邮件操作“UPDATE_PASSWORD”并且用户将设置新密码,结果将被持久化到 Keycloak 和 openldap 之后是否正确? 但仅当 ldap 上的“编辑模式”设置为 “WRITABLE” 时?万一现在,如果没有这种模式,我将在keycloak中更改密码,由于与ldap不一致,数据将被破坏。 另外,我没有创建这个 keycloak-server,在 LDAP 上将编辑模式设置为“WRITABLE”被认为是一种不好的做法/漏洞? 在这种情况下,解决方法是将密码直接写入openldap?
现在我以这种方式更新密码,但在没有启用 ldap 的情况下对其进行了测试
public void updatePassword(String id){
UserResource userResource = keycloak.realm(keycloakProperties.getRealm())
.users().get(id);
userResource.executeActionsEmail(List.of("UPDATE_PASSWORD"));
}
服务使用带有“keycloak-admin-client”依赖的Spring(v. 15.0.2)
【问题讨论】:
标签: java spring ldap keycloak openldap