簡體   English   中英

啟用 LDAP 的 Keycloak 電子郵件“UPDATE_PASSWORD”機制(15.0.2)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM