大規模なシステムでロールベースを使用するには、常に問題があります。このようなソフトウェアでは、スーパーユーザーが組織のユーザー権限を設定できるようにする必要があります。多くのアトミック ロールを作成し、ロールをユーザーに割り当てるためのコンソールを作成できます。次に、多くの役割を作成する必要があります。たとえば、次のようになります。
AddProduct、RemoveProduct、EditProduct、AcceptPurchase、DenayPurchase、...
このように、中規模システムの場合、少なくとも 50 のロールが必要です。次に、管理者が各ユーザーにこれらの役割を割り当てるにはどうすればよいでしょうか?
一見すると、2 つの解決策があります。
ユーザーとロールの間に配置するテーブル (たとえば、Group ) を DB に作成します。次に、管理者は役割のグループを作成し、グループを複数のユーザーに割り当てる必要があります。
権限のグループとしてロールを使用します。たとえば、PermissionInRoles テーブルを作成し、各ロールにアクセス許可を割り当ててから、そのロールをユーザーに割り当てます。
最初のアプローチはナンセンスだとすぐにわかります。そして、2番目のアプローチでいくつかのプロジェクトを実施しています。しかし今は、WCF RIA 認証サービスに加えて、sivlerlight プロジェクトで使用したいと考えています。役割をサポートするだけです。たとえば、各ユーザー インスタンスにはIsInRoleメソッドがあり、代わりにIsInPermissionメソッドを実装します。
サービスにRequiresRole属性を使用する場合、別の問題があります。各サービスメソッドにハードコードのロール名を付けることはできませんし、したくありません。
役割ベースのセキュリティ設計について、私たちは非常に混乱していることを知っておいてください! これらの状況でどのように使用できますか?