3

私は率直に言ってエンティティレベルの認証の要件があります。私はこのパーミッション構造についていくつかの指針を得ることを望んでいます。どのように.NET 4.5で実装するのか、それを改善する方法があるかどうかを知りたいと思っています。階層データスキームのエンティティレベルのアクセス制御

ここでは、行く:


私は次のように構造化されたデータのセットを持っている:

enter image description here

  • Fleetがゼロ以上のコレクションですCars
  • Fleet
  • を含むことができ、他の Fleets

艦隊は後に再編成し、組織的な目的のために周りに移動することができます。

私はこれらの事業体に関連するシステムの権限を持ついくつかの役割があります。

  • 所有者を:艦隊
  • マネージャーから車を追加または削除できます:車
  • にドライバを割り当て
  • ドライバ:単純に車を運転することが許可されています
  • メカニックは:

車を修正するために許可されている認可ロジックは、1つまたは複数の役割をFleetまたはCarのいずれかへのアクセスを許可するシステムでUserすることができます。

はここで説明するためにいくつかのシナリオです:

  1. 私はDriverの役割を持つFleet#5Userジムのアクセス権を付与した場合、彼はフリート#2の下で任意の車を運転することが許可されています。結果として得られたアクセス許可により、彼は#4,5,6車を運転することができます
  2. Mauraに機械のようにCar #1へのアクセスを許可すれば、得られた許可によって彼女は#1車だけを修理できます。私は役割OwnerMechanicとフリート#2へのユーザーサラのアクセス権を付与した場合
  3. は、彼女は、彼女が車に#1を修正するために許可されている#2艦隊、4、5 に車を追加および削除することが許可されています2,3,4,5,6。
  4. 私はDriverとしてジェレミー艦隊#6にOwnerとして艦隊#1へのアクセスをユーザーを付与すると、結果の権限は、彼はすべての艦隊ドライブ車#7に車を追加および削除することができます8.彼は、#7と8

このエンティティレベルの許可に良い方法は何である以外、他の車を運転することはできませんか?

重要な場合は、ASP.net Boilerplateの上に構築されたEF6コードファーストで.NET 4.5.1を使用しています。

答えて

0

あなたが実装したい密な認可はアクセスコントロールオブジェクト(のACO - たかった何か)のことを思い出すと、アクセスリクエストオブジェクト(AROs - 何かを望んでいる何かを)いくつかのバリエーションを持つCakePHP's Access Control List (ACL) description中:

ここ

ARO(オーナー、マネージャー、ドライバー、メカニック)から要求されるACO(艦隊と車)があります。依頼者がオブジェクトにアクセスできるかどうかを知りたい場合は、そのオブジェクトへのパスを見つけて(Can John access "Car #3"?:ルートから「Car#3」のパスを見つける:Fleet #1 > Fleet #2 > Car #3)、各ノードにデフォルトのアクセス権「拒否」を割り当てますそのノードがリクエスターの許可されたノード・リストにある場合は「許可」に切り替えます。最後のノードが "Allow"で終わるならば、well ... allow、else deny。

ロジックを最初に理解することが重要です。どんな言語でも実装は2番目です。

私は正しい方向にあなたを指してくれることを願っています。

乾杯、

関連する問題