Keycloak通过API向用户添加属性和409错误

问题描述

我正在尝试向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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...