15

Spring Security は、標準の役割と許可ベースの承認に適していることを知っています。私が確信していないのは、このシナリオです:

システムには 10,000 人の従業員が管理されており、従業員は組織図 (部門を超えて誰が誰に報告するかを示すツリー) に編成されています。これらの従業員の一部はユーザーです。これらのユーザーは、自分の責任範囲内の従業員 (ツリー内のブランチ / 従業員の子孫) にのみアクセスできます。

では、最新の Java EE (またはその他の) システムはこれらのチェックをどのように管理しているのでしょうか? Spring Security (ACL) はこれを行うことができ、どのようにモデル化できますか?

私たちの古い実装 (何年も前) では、ユーザーが従業員にアクセスすると、要求された従業員がツリーを再帰することによって子孫であるかどうかを確認できます。しかし、これは理想的なソリューションではなく、新しいソリューションを使用したいと考えています。

4

2 に答える 2

6

私はこのテーマに1か月間取り組んできたので、この質問に対する私の答えをお伝えすることができますが、もっと良い答えがあるかもしれません。
Spring Securityにはロール階層としての機能があり、ROLE_A> ROLE_Bを使用すると、ROLE_AはROLE_Bが持つすべての権限を持ちます。
したがって、ここには2つのオプションがあります

。1。すべてのユーザーとその子孫には、のような役割のペアがあります。ユーザーの場合はROLE_USERi、子孫の場合はROLE_USERiDESC。
ROLE_USERi> ROLE_USERiDESCになりますが
、(組織図がわからないため)これらのペアが多数ある可能性があるため、これでは不十分な場合があります。どういうわけか、ツリーに2つまたは3つのレベルがある場合(ROLE_USERには最大で1つまたは2つのアセンダントがあります)、役割が高いほど、より多くの権限を持つことになります。

2.私のプロジェクト(偶然に非常に似ています)では、他の方法を実行しました。私はいくつかの基本的な行動のためにいくつかの基本的な役割を持っています。そして、私には、介護者がその子孫のデータを観察できる「介護グループ」があります。
なぜ私はそれをするのでしょうか?私はいくつかの行動(編集、削除、機密データへのアクセスなど)と観察する思いやりのあるグループの役割を持たなければならないからです。
AがBの世話をしている場合、Bのデータを監視することはできますが、Aはその権限を超えて何もすることはできません。

ところで、それはまだ完全にテストされていないので、別の可能な解決策にたどり着くかもしれません。

関連項目:

于 2012-07-10T05:08:35.813 に答える
1

Spring Security について話すとき、Spring が提供するものが 2 つあります。1) ロール管理 2) ACL (ドメイン レベルのアクセス許可) ここで必要なのはドメイン レベルのアクセス許可だと思います。

ロール管理を使用する場合、すべてのユーザーに対応するロールを作成すると、データが大きくなる可能性があります。2 番目のオプションは、実行時の承認に適したフレームワークであるドメイン レベルのアクセス許可 (Spring ACL) を使用することです。これは注釈ベースの承認に使用できますが、管理 API は非常に限られているため (BasicLookupStrategy)、使用する前にドキュメントを参照してください。

于 2015-04-22T10:36:00.240 に答える