Как изменить loginId Keycloak с помощью API REST Keycloak

Я пытаюсь изменить loginId пользователя Keycloak с помощью API REST Keycloak. Моя версия Keycloak - 4.4.0. Согласно документации, сначала мне нужно установить "editUsernameAllowed": "true" в RealmRepresentation перед обновлением пользователя. Я называю это PUT API http://localhost:8081/auth/admin/realms/{myrealm}.

Но я действительно разочарован телом запроса, потому что документация Keyclaok не ясна. Я пробовал с токеном следующее. Но это не сработает.

{
    "rep":{
        "editUsernameAllowed": "true"
    }
}
{
    "editUsernameAllowed": "true"
}

Могу я узнать, как это сделать правильно?


person RYJ    schedule 04.10.2019    source источник
comment
Какую ошибку вы получаете?   -  person Ritesh Puj    schedule 04.10.2019
comment
@RiteshPuj В первом случае написано Unrecognized field "rep" (class org.keycloak.representations.idm.RealmRepresentation), not marked as ignorable. Во втором случае возвращается 403   -  person RYJ    schedule 04.10.2019
comment
Я добавил ответ. Пожалуйста, дайте мне знать, работает ли это для вас.   -  person Ritesh Puj    schedule 04.10.2019
comment
@RiteshPuj Я проверил, но он также возвращает 403   -  person RYJ    schedule 04.10.2019
comment
не могли бы вы опубликовать запрос curl, который вы используете для вызова API? Возможно, вам не хватает токена в запросе.   -  person Ritesh Puj    schedule 04.10.2019
comment
Я пытаюсь использовать Postman, я уже добавил токен на предъявителя в заголовок.   -  person RYJ    schedule 04.10.2019
comment
ошибка 403 запрещена предполагает, что у используемого токена или учетных данных недостаточно прав для обновления области. не могли бы вы проверить эту часть?   -  person Ritesh Puj    schedule 04.10.2019
comment
в порядке. Я проверю это. Большое спасибо.   -  person RYJ    schedule 04.10.2019


Ответы (1)


Вы передаете строковое значение в поле editUsernameAllowed, но оно принимает логическое значение. Попробуй это:

http://localhost:8081/auth/admin/realms/{myrealm}
Тело:

{
    "editUsernameAllowed": true
}
person Ritesh Puj    schedule 04.10.2019
comment
Вот моя просьба PUT /auth/admin/realms/api HTTP/1.1 Host: localhost:8081 Content-Type: application/json Authorization: Bearer <token> User-Agent: PostmanRuntime/7.17.1 Accept: */* Cache-Control: no-cache Postman-Token: 5e3d975e-4880-4973-9dee-586008362d64,8a2acc48-e31e-4fb6-8bec-90e1e5057e7e Host: localhost:8081 Accept-Encoding: gzip, deflate Content-Length: 32 Connection: keep-alive cache-control: no-cache { "editUsernameAllowed": true } - person RYJ; 04.10.2019