この記事とこの投稿に基づいて実装されたソリューションがあります。次に、このソリューションを強化する必要があります。ユースケースはこちら。
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を持つユーザーROLE_ORG_ADMIN
を作成するrole を持つユーザーを制限することROLE_ADMIN
です。との両方ROLE_ORG_ADMIN
にROLE_ADMIN
権限がありCREATE_USER
ます。現在のユーザー ロールがROLE_ADMIN
api でない場合、 role を持つユーザーを作成しようとすると、アクセスが拒否されたという応答が返されますROLE_ADMIN
。助けてください。