7

ユーザー管理アプリケーションを開発する必要があります。データレベルの例でユーザーを承認する必要があります:

銀行の例を挙げる:

  1. クライアント - 例: Bank1、Bank2、Bank3、Bank4。
  2. 分岐状態 - 例: Stat1、State2、State3、State4
  3. 支店地区 - 例: District1、District2、District3、District4
  4. 設備 - 小切手、口座振替、スタンディング オーダー

ユーザーがログインすると、ユーザー管理アプリケーションで割り当てられた支店、施設などに応じて、一部のクライアント、一部の州支店、一部の地区支店のみが表示されます。これらの変更は、さまざまなユーザーに適用されます。

誰かがこのレベルの承認のために私を助けてくれますか?

4

3 に答える 3

5

You need to implement your own Authorization mechanism, you need to create a control table where you store the user access level, (assuming a lot of things) something like:

UserAuthorization (UserId, EntityId, EntityType)

UserId: Reference to User.

EntityId: Id of the element you want to grant access to.

EntityType: Type of element you want to grant access (Client, State, District, Facility)

+--------+----------+------------+
| UserId | EntityId | EntityType |
+--------+----------+------------+
|      1 |        2 | CLIENT     |
|      1 |        2 | STATE      |
|      1 |        3 | DISTRICT   |
+--------+----------+------------+

You can use and should use an integer to represent EntityType, i wrote it like text just for the example.

于 2012-12-21T14:44:46.893 に答える
1

ClaimsPrincipal を見て、Claims ベースの承認を使用することができます。.Net 4.5 では、WIF が統合されています。ここで要約を見ることができますhttp://msdn.microsoft.com/en-us/library/ms729851.aspx

おそらく、システム内のエンティティごとにアクセス制御リストを作成する必要があります。最終的には、GUID を使用して私が考えたエンティティを一意に定義する簡単な方法が必要です。次に、その GUID に対する要求を要求します。明らかにより複雑になり、読み取り、書き込みタイプのアクセス許可が必要になる可能性があります。エンティティごとに直接アクセスを許可すると、多くのクレームが発生する可能性があります。

最終的に、個々のエンティティに対するアクセス権を定義したいですか? ある種のグループ化のほうがよいでしょうか?銀行を管理できる場合は、そのすべての州を管理でき、その地区を管理できる場合は、すべての地区の支店を管理できます。

ユーザーをグループにグループ化し、グループにアクセス権を割り当ててみます。NTFS でファイルを管理する場合、個々のファイルへのアクセスを許可することはめったにありません。

エンティティのグループに対するアクセス許可を誰かに付与する場合は、最初に何らかのグループ チェックを行い、そのクレームがない場合はエンティティ チェックを行います。

おそらくhttp://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthorizationmanager.aspxでいくつかのカスタムを行う必要があります。銀行などを編集するクレームを渡すと、その特定の銀行に対する許可があるかどうかがチェックされます。CheckAccess メソッドで ACL のロジックを実行する必要があると思います。

http://thinktecture.github.com/Thinktecture.IdentityModel.45/もご覧ください。

次の投稿も見つけましたhttp://leastprivilege.com/2012/06/24/approaches-to-server-side-authorization/ - 最後にLucerosの提案を読んでください。基本的には上記の通り

于 2012-12-21T22:22:56.557 に答える
0

回答ありがとうございます。サンプルデータをご覧ください。それは3/n-レベルの数まで行くことができます。

User1d UserName

USR1      John    
USR2      William
USR3      Joseph
USR4      Mathew
USR5      George

ClientId ClientName

CL1         Barclays
CL2         LLoyds TSB
CL3         Natwest
CL4         Nationwide
CL5         HSBC

CountryId CountryName

CON1        England
CON2        Wales
CON3        Scotland
CON4        Northern Ireland

CountryId CityId CityName

CON1        CTY1      Liverpool 
CON1        CTY2      Waterloo
CON1        CTY3      Piccadilly
CON2        CTY4      Cardiff   
CON2        CTY5      Ammanford
CON2        CTY6      Abergele
CON3        CTY7      Glasgow
CON3        CTY8      Edinburgh
CON3        CTY9      Aberdeen
CON4        CTY10     Belfast
CON4        CTY11     Hannahstown
CON4        CTY12     Springfield

CountryId CityId BranchId BranchName

CON1        CTY1      BRC1        Branch1
CON1        CTY1      BRC2        Branch2
CON1        CTY1      BRC3        Branch3
CON2        CTY4      BRC4        Branch4
CON2        CTY4      BRC5        Branch5
CON2        CTY4      BRC6        Branch6

UserId ClientId CountryId CityId BranchId

 USR1      CL1         CON1        CTY1      BRC1        
 USR1      CL1         CON1        CTY1      BRC2        
 USR2      CL2         CON1        CTY1      BRC1
 USR2      CL2         CON1        CTY1      BRC2  
于 2012-12-25T00:45:48.540 に答える