2

この記事この投稿に基づいて実装されたソリューションがあります。次に、このソリューションを強化する必要があります。ユースケースはこちら。

CREATE_USERなどのさまざまな権限がありますがCREATE_ORG、ユーザーの役割に基づいて、特定の制限を適用する必要があります。たとえば、ユーザーを作成することROLE_ADMINROLE_ORG_ADMINできます。ただしROLE_ORG_ADMIN、特定の権限を持つユーザーのみを作成できます(または、特権ROLE_ORG_ADMINを持つユーザーを作成できないはずです)ROLE_ADMIN

  1. ROLE単なる権限のグループです
  2. ユーザーは役割に関連付けられており、ログイン時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_ADMINROLE_ADMIN権限がありCREATE_USERます。現在のユーザー ロールがROLE_ADMINapi でない場合、 role を持つユーザーを作成しようとすると、アクセスが拒否されたという応答が返されますROLE_ADMIN。助けてください。

4

1 に答える 1

0

これを処理する 2 つの方法、オプション 1 を共有したいと思います。ユーザーの作成中に、使用可能な User_Roles をユーザーにどのようにリストしていますか? すべてのユーザー ロールを表示し、ユーザーがそれぞれのロールを選択できるようにしている場合、使用可能なユーザー ロール自体を一覧表示するときに、ログインしているユーザーが ROLE_ORG_ADMIN の場合、ROLE_ADMIN を一覧表示することを避けることができます。

オプション 2. UI で処理したくない場合は、バックエンドで USER を作成しているときに、ログインしているユーザー ROLE_ORG_ADMIN が ROLE_ADMIN で USER を作成しようとすると、例外を使用できます。プリンシパル オブジェクトを介して、ログインしているユーザーの詳細にアクセスできます。

いずれかのオプションが実装されることを願っています。

于 2015-12-22T03:06:02.840 に答える