Apache Shiroフレームワークを使用してWebアプリケーションを保護しようとしています(UIはVaadin 6に基づいています)。シロのサイトのすべての例を見て、何時間もグーグル探検しましたが、以下の要件に対処するきれいな方法を見つけることはできません。Apache Shiroを使用して階層的な役割/権限を処理するにはどうすればよいですか?
アプリケーションは、企業階層内の特定の部門に属するアクティビティを作成するプロジェクト管理ツールの一種です。各ユーザーは複数の部署で働くことができ、各部署で異なるセキュリティ役割を果たします。例:
Department A - User is 'Manager' here Department B Department C - User is 'Admin' here Department D
ユーザー部門A ユーザーの「マネージャ」ではまた、(C部門の祖先である)部門Dのための「管理者の役割を継承しなければならない部署C ユーザーに「管理者」です。
ので、(私はいくつかの部門に属するアクティビティを表示したいと仮定した場合)基本的なパーミッションチェックをするようになります:アクティビティのユーザーが表示しようとしている場合
- チェック部門のユーザーに所属する役割を持っています。
- この部門の彼の役割に基づいて必要な権限を持っていることを確認してください。
私は現在、「システム全体の役割」だけでなく「この特定の部門の役割」という概念を実装する方法を理解していません。
上記の例を「activity:view:123」のような許可文字列に変換するにはどうすればよいですか?そして、ビジネスロジックのパーミッションをどうやってチェックするのですか?
もう1つの疑問は、Shiroの実装です。すぐに使用できるソリューションを使用したいのですが、独自の実装を提供するための最小限の努力が必要です。しかし、Shiroの組み込み実装は単純なケースのためだけに設計されているようです。複雑な認証の実装の例はありますか?(上記のケースをカバーできますか?)