【问题标题】:Keycloak email "UPDATE_PASSWORD" mechanism with LDAP enabled(15.0.2)启用 LDAP 的 Keycloak 电子邮件“UPDATE_PASSWORD”机制(15.0.2)
【发布时间】: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


    【解决方案1】:

    事实证明就像文档所说的那样简单。如果 LDAP 上的“编辑模式”设置为 WRITABLE,新密码将自动与您的 LDAP 存储同步。我决定直接在 openldap 中更新“userPassword”,并且没有读取和写入用户数据的 keycloak 实例。同样在我的情况下,更新的密码格式是“纯文本”。使用本指南中的证书启用编码https://github.com/osixia/docker-openldap/issues/208

    policy.ldif

    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: ppolicy 
    

    overlay.ldif

    dn: olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config
    objectClass: olcOverlayConfig
    objectClass: olcPPolicyConfig
    olcOverlay: {2}ppolicy
    olcPPolicyHashCleartext: TRUE
    

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 1970-01-01
      • 2015-07-15
      • 2022-06-18
      • 2019-06-16
      • 2020-09-12
      • 2018-08-17
      • 2022-06-15
      • 1970-01-01
      相关资源
      最近更新 更多