[英]Keycloak email "UPDATE_PASSWORD" mechanism with LDAP enabled(15.0.2)
我有一个使用它进行身份验证的 keycloak-server 和服务。 我想允许用户更改他们的密码。 但是文档中不清楚电子邮件操作“更新密码”如何在启用 LDAP 的情况下工作。 https://www.keycloak.org/docs/latest/server_admin/#_user-storage-federation
“默认情况下,Keycloak 会将用户从 LDAP 导入本地 Keycloak 用户数据库。该用户副本要么按需同步,要么通过定期后台任务进行同步。唯一的例外是密码同步。密码永远不会导入. 他们的验证总是委托给 LDAP 服务器“
并在“编辑模式”部分
“可写的用户名、电子邮件、名字、姓氏和其他映射属性和密码都可以更新,并将自动与您的 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 )
结果证明就像文档说的一样简单。 如果 LDAP 上的“编辑模式”设置为WRITABLE ,新密码将自动与您的 LDAP 存储同步。 我决定直接在 openldap 中更新“userPassword”,并且没有读取和写入用户数据的 keycloak 实例。 同样在我的情况下,更新后的密码格式是“纯文本”。 使用本指南中的证书启用编码https://github.com/osixia/docker-openldap/issues/208
政策文件
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy
覆盖.ldif
dn: olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: {2}ppolicy
olcPPolicyHashCleartext: TRUE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.