我們有一個基於此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 ...)
現在我們有一個管理界面,我們控制從UI這些限制,在用戶界面,用於創建用戶我們不選擇列表中顯示爲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
,則在嘗試創建角色爲ROLE_ADMIN
的用戶時,api應迴應拒絕訪問。請幫忙。
@ willie-wheeler因爲你是我提到的文章的作者,請回顧這個問題。 – titogeo