问题描述
我正在尝试向Keycloak:10.0.1的现有用户添加属性。
let mut buf = Vec::new();
swap(&mut buf,self.buf);
// here we now consume the swapped buf
let s = String::from_utf8(buf).expect("Unable to read file");
let mut start: i8 = -1;
let mut end: i8 = -1;
for (i,c) in s.char_indices() {
if start == -1 {
if !c.is_whitespace() {
start = i as i8;
}
} else {
if c.is_whitespace() {
end = i as i8;
}
}
}
self.token = s.chars().skip(start as usize).take((end - start) as usize).collect();
self.buf = s.into_bytes();
self.buf.clear();
return true;
我收到错误HTTP-409:
@Override
public void addAttribute(String userId,String value) throws UserDoesNotExistException {
log.info("Trying add attribute to user: " + userId);
Keycloak keycloak = getClient();
RealmResource realmResource = keycloak.realm(configuration.getKeycloakRealm());
final UserResource userResource = realmResource.users().get(userId);
final UserRepresentation user = userResource.toRepresentation();
if (user.getAttributes() == null) {
user.setAttributes(new HashMap<>());
}
user.getAttributes().put(Const.SOME_ATTRIBUTE,Collections.singletonList(value));
userResource.update(user);
log.info("Attribute to user: " + userId + " added successfully");
}
解决方法
解决方案:属性值太长。您必须在keycloak数据库中更改大小。
ALTER TABLE user_attribute ALTER COLUMN值TYPE TEXT;
默认类型为VARCHAR(255)