我们有一个基于这篇文章和这篇文章的解决方案。现在我们需要增强这个解决方案。这是用例。
有各种权限,例如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 ...)
现在我们有一个管理界面,我们可以从 UI 控制这些限制,在用于创建用户的 UI 中,我们不会ROLE_ADMIN
在ROLE_ORG_ADMIN
. 我们将为第三方公开 api。我们不确定如何在 api 级别做到这一点。
POST /api/users
{
"id": null,
"login": "name",
"firstName": "first",
"lastName": "Last",
"email": "first.last@email.com",
"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
。请帮忙。