Надеюсь, что кто-то может мне помочь в этом. Я создал свой собственный мир Keycloak и клиента. Я использую загрузку Spring и KeycloakRestTemplate из org.keycloak.adapters.springsecurity.client.KeycloakRestTemplate; делать все мои звонки.
Мне удалось добавить роли клиентского уровня в сопоставление ролей любого пользователя.
Я добавляю к своему URI префикс / admin / realms / при использовании документации API Keycloak. Пока все мои запросы работали (получение списка пользователей от моего клиента, получение списка пользователей с определенной ролью на уровне клиента и даже добавление ролей на уровне клиента пользователю, как описано выше)
Моя проблема в том, что я не могу удалить роли клиентского уровня от пользователя. Я просмотрел документы keycloak и, похоже, все правильно выполнил. Я также убедился, что у пользователя есть подходящие клиентские роли, доступные для удаления. Я очень ценю любые комментарии или помощь !!
https://www.keycloak.org/docs-api/14.0/rest-api/index.html
Удаление ролей уровня клиента из сопоставления ролей пользователей DELETE / {realm} / users / {id} / role-mappings / clients / {client}
import org.keycloak.adapters.springsecurity.client.KeycloakRestTemplate;
.
.
.
@Autowired
private KeycloakRestTemplate restTemplate;
.
.
.
.
.
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(keycloakServerUrl + "/admin/realms/"+keycloakRealm+"/users/"+userId+"/role-mappings/clients/"+keycloakClientId);
this.restTemplate.postForEntity(builder.toUriString(), rolesList, List.class); // this works! Note: rolesList is an List<RoleRepresentation> object
.
.
.
this.restTemplate.delete(builder.toUriString(), rolesList); // Does not work!
URI: http: // XXXXXXXXXXXXXXX: 8180 / auth / admin / realms / VLS / users / 2144cc43-59f4-4406-9527-2a59ee0c3751 / role-mappings / clients / 53e659e1-7cef-4dbb-8cdd-b786ca3a44a
Ошибка при вызове API удаления: org.springframework.web.client.HttpClientErrorException $ UnsupportedMediaType: 415 Неподдерживаемый тип мультимедиа: [{ошибка: RESTEASY003065: невозможно использовать тип содержимого}]
Изменить 1: Я также заранее предоставил себе ВСЕ доступные роли от всех клиентов в качестве меры предосторожности. Я понимаю, что некоторые роли необходимы для выполнения определенных задач даже через API. Я учел это.