У меня проблема с ограничением Keycloak в приложении весенней загрузки, мне нужно ограничить доступ к конечным точкам по ролям.
В предыдущей версии моего приложения я использовал Spring Security только со следующей конфигурацией:
.antMatchers(HttpMethod.PUT, "/brands/models/{id}").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.DELETE, "/brands/models/{id}").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.POST, "/brands/models/versions").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.PUT, "/brands/models/versions/{id}").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.PUT, "/brands/models/versions/{id}/default").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.DELETE, "/brands/models/versions/{id}").hasAnyAuthority(ADMIN_ROLE)
.antMatchers(HttpMethod.PUT, "/brands/models/versions/{id}/price").hasAnyAuthority(USER_ROLE)
В моем новом приложении с Keycloak (без Spring Security) мне нужно сделать то же самое в application.yml.
например как
security-constraints[0]:
auth-roles:
- admin
security-collections[0]:
name: endpoints models
patterns:
- /brands/models
- /brands/models/{id}
methods:
- POST
- PUT
- DELETE
security-collections[1]:
name: endpoints versions
patterns:
- /brands/models/versions
- /brands/models/versions/{id}
- /brands/models/versions/{id}/default
methods:
- POST
- PUT
- DELETE
security-constraints[1]:
auth-roles:
- user
security-collections[0]:
name: endpoints modelos
patterns:
- /brands/models/versions/{id}/price
methods:
- PUT
Идея состоит в том, что роль администратора может выполнять операции CRUD с этими конечными точками
/ марки / модели
/ Марка / модель / версия
А пользовательская роль может обновлять только атрибуты в конечной точке
/ брендов / модель / версия / {ID} / цена
Есть предложения?
Спасибо