Keycloak重置用户密码

时间:2018-12-18 12:38:29

标签: java authentication keycloak bcrypt

我有一个用户在密钥斗篷中,我想重设他的密码。

该密码已存在于数据库中,并且是通过Spring的BCryptPasswordEncoder创建的。

这是我的新密码:$2a$10$.Y5G9KV1JCToOifuzvbZf.guYplSLnpqmNkPdD2k2IZc3wNAMpyjC

这就是我尝试重置现有的方法:

CredentialRepresentation newCreds = new CredentialRepresentation();
newCreds.setType(CredentialRepresentation.PASSWORD);
newCreds.setHashedSaltedValue(newPassword);
newCreds.setAlgorithm("bcrypt");
newCreds.setTemporary(false);

getKeycloakClient().realm("master").users().get(userId).resetPassword(newCreds);

它不起作用。我收到错误消息:javax.ws.rs.BadRequestException: HTTP 400 Bad Request

但是当我将其更改为:

CredentialRepresentation newCreds = new CredentialRepresentation();
newCreds.setType(CredentialRepresentation.PASSWORD);
newCreds.setValue("testPassword");
newCreds.setTemporary(false);

getKeycloakClient().realm("master").users().get(userId).resetPassword(newCreds);

它工作正常。

如何使用已使用BCrypt加密的密码重置密钥斗篷中的密码?

编辑:

现在,我知道我必须通过设置newCreds.setSalt(salt)来发送盐作为密码,但是仍然存在一个问题。 Keycloak为此接受Base64,Spring的BCryptPasswordEncoder生成带有.字符的值,BAse64不接受该字符

0 个答案:

没有答案