Я использую Spring Boot 2 и Keycloak (keycloak-spring-boot-starter) для реализации REST API. Однако я просто не могу это понять.
Мои ресурсы API выглядят так:
POST / api / a для создания, если предоставлен: write
GET / api / a, чтобы прочитать все, предоставлено: read
GET / api / a / {name} для чтения одного a (если предоставлено: read)
POST / api / a / {name} / b для создания b под a, если предоставлено b: написать и так далее...
Каждый ресурс API должен также получить ResourceRepresentation в Keycloak, поскольку требуется предоставить пользователям доступ на чтение для каждой ресурсной базы. Я планирую использовать для этого группы и назначать пользователей в группы, соответствующие названию ресурса. (например, имя ресурса будет / a1 / b1, что также будет группой, в которую я назначаю пользователей с доступом для чтения)
Разрешения на запись будут предоставлены только администраторам, которые будут входить в группу, которой назначена соответствующая роль.
Я пытался всю неделю, но безуспешно. И моя реализация API, и конфигурация Keycloak выглядят как поле битвы. Пример на github слишком упрощен, так как не показывает вложенные ресурсы и корреляцию между HTTP-методами и областями действия.
Как бы вы структурировали
Как вы настраиваете ресурсы с областями действия в контроллере?




Концептуально мне пришлось проводить различие между отдельными ресурсами и ресурсами списка:
/buildings/building-1 associated with scopes building:read, building:write, roomS:read, roomS:write
/buildings/building-1/rooms requires the roomS:read or roomS:write respectively
/buildings/building-1/rooms/room-1 associated with scopes room:read, room:write
Обратите внимание на множественное число в области действия ресурса /rooms.
Кроме того, работает смешанная конфигурация policy-enforcer-config между application.properties и сервером Keycloak: конечные точки сопоставляются с областями в application.properties, а конкретные пути к ресурсам управляются сервером Keycloak.
Надеюсь, это поможет кому-то другому!
Вот конфигурация для обеспечения разрешения на основе области -
keycloak.policy-enforcer-config.paths [1] .path = / api / resourcea keycloak.policy-enforcer-config.paths [1] .scopes = профиль: просмотр, альбом: удалить
как добавить области с ресурсами на стороне приложения? Как будто у меня есть область чтения и записи для ресурсаa