У нас есть решение, реализованное на основе этого article и this post. Теперь нам нужно усилить это решение. Вот пример использования.Доступ на основе разрешений на доступ к весне для api
Существуют различные разрешения, такие как CREATE_USER
, CREATE_ORG
и т. Д. Но на основе ролей пользователей нам необходимо применить определенные ограничения. Например, ROLE_ADMIN
, а также ROLE_ORG_ADMIN
могут создавать пользователи. Но ROLE_ORG_ADMIN
может создавать только пользователь с некоторым специальным разрешением (или ROLE_ORG_ADMIN
не должен быть в состоянии создать пользователь с ROLE_ADMIN
правами)
ROLE
просто группа разрешений- Пользователя связан с ролью и при входе в системе
org.springframework.security.core.userdetails.User.authorities
устанавливается с правами вместоROLE
у нас есть приложение REST с проверкой подлинности на основе маркеров.
@RequestMapping(value = "/users",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@Secured(AuthoritiesConstants.CREATE_USER)
public ResponseEntity<?> createUser(@RequestBody ...)
Теперь у нас есть интерфейс администратора, где мы контролируем эти ограничения из пользовательского интерфейса, в пользовательском интерфейсе для создания пользователя, которого мы не отображать ROLE_ADMIN
в списке выбора для ROLE_ORG_ADMIN
. Мы собираемся выставить api для третьей стороны. Мы не знаем, как это можно сделать на уровне api.
POST /api/users
{
"id": null,
"login": "name",
"firstName": "first",
"lastName": "Last",
"email": "[email protected]",
"activated": true,
"langKey": "en",
"createdBy": null,
"createdDate": null,
"lastModifiedBy": null,
"lastModifiedDate": null,
"resetDate": null,
"resetKey": null,
"authorities": [
"ROLE_ORG_ADMIN",
"ROLE_ADMIN"
]
}
То, что мы хотим сделать, это ограничить пользователю роль ROLE_ORG_ADMIN
создания пользователей с ролью ROLE_ADMIN
. И ROLE_ORG_ADMIN
, и ROLE_ADMIN
имеет разрешение CREATE_USER
. Если текущая роль пользователя не равна ROLE_ADMIN
, api должен ответить с отказом доступа при попытке создать пользователя с ролью ROLE_ADMIN
. Пожалуйста помоги.
@ willie-wheeler, так как вы являетесь автором статьи, упомянутой выше, просмотрите этот вопрос. – titogeo