2016-10-30 166 views
1

Keycloak'reset-password'REST API中使用的CredentialRepresentation包含用於散列算法,散列密碼,哈希迭代等的字段。 這暗示我可以通過散列密碼並且它的所有散列規範,而不是將明文密碼傳遞給服務。這正是我想要做的,因爲傳遞一個純文本密碼並不合適。Keycloak通過REST API通過hash重置用戶密碼

但是,當我嘗試調用不帶純文本值的服務時,出現400錯誤,並顯示缺少純文本值的錯誤消息。有什麼辦法只傳遞哈希密碼?

回答

2

傳遞明文密碼(當然通過HTTPS)允許keycloak使用領域的散列算法策略對其進行散列。

如果您想要傳遞哈希密碼值,迭代和算法,那麼您還需要提供實現PasswordHashProviderFactory和PasswordHashProvider的哈希SPI。我不認爲這是通過重置密碼API可用,但可以與更新用戶API一起使用(我還沒有測試過)。

而不是手動指定新密碼,更好的安全做法是使用PUT /admin/realms/{realm}/users/{id}/execute-actions-email管理員調用"UPDATE_PASSWORD"作爲必需的操作。這會導致Keycloak向用戶發送一封電子郵件,該鏈接可直接設置新密碼。