2011-02-09 19 views
1

私は、ASP.NET 3.5 Webアプリケーションの認証部分を完成させました。私は共通の認可パターンについてもっと知りたいと思います。私は「モジュール」と「運用」のテーブルを持つデータベースを持っているアプリケーションで承認を処理する方法は?

は、私は私の現在の許可構造を提示することができます。 モジュールは、アプリケーションにシステムを表し、操作は、1つのシステム内で実行することができるアクションを表す

お客様、注文、請求はモジュールとして定義されます。 "操作"は、モジュール:Customer.Add、Customer.Deleteは顧客操作に関連しています。

各ユーザーには、役割に応じて特定の操作にアクセスできる役割があります。

そのページのメニューは、ユーザーのアクセスに基づいて生成され、ユーザーがアクセスする必要のないモジュールや操作は表示されませんのでご注意ください。


私の質問は、可能であれば既存のパターンや手法を使用して、ここで認証スキームを実装する方法から始まります。

モジュールを保護する方法と時期、およびモジュールの操作を実行するユーザーの承認を確認する必要がありますか。

私はまだこれを実装していないが、ここで私は考え一つの方法です:操作上の

  1. ユーザーがクリック:モジュール:お客様は|操作:追加
  2. 私はユーザーの役割を見て、ユーザーが操作を実行できることを確認した後、操作を開始するか、またはそれに従ってユーザーを指示します。


この質問の曖昧な性質はご容赦ください。私はここで何を尋ねるか分からない。

私は人々が認可をどのように処理するのか、人々がビジネスメソッドへのアクセスを許可/禁止する方法を見たいと考えています。私は、宣言的なセキュリティが私の必要とするものであるかどうか、あるいは上記で提供した簡単な例が行く方法であるかどうかはわかりません。

ここには多くのオプションがあり、可能性は無限に思われます。アプリケーションの内部で認証を処理するためのモデルやパターンがあるかどうかを教えてください。

+0

私が開始するには良い場所は、標準的なasp.netシステムと、おそらくだと思う - 彼らが始めるには絶好の場所となり、かなり一般的な標準スキーマを持っているのMembershipProvider、rolesprovider、など。 http://www.4guysfromrolla.com/articles/120705-1.aspx – Prescott

答えて

1

このようにしたい場合は、小さくしてください。

まず過負荷とpublic bool User.HasRightsFor(Module m, Action a)の線に沿って機能を実装します。現在のユーザーをシステムから取得できるため、静的にすることもできます。

これで、ユーザーが現在のアクション/モジュール/その他の権限を持っているかどうかを尋ねることができます。

それはあなたが現在、私は役割を見て、その後deciceが、直接結果を返さないということを除いて考えたものと非常によく似ています。後で内部構造を解決することができ、システムの変更が容易になります。

このようなシステムを(例えば)ASP.NET Role-Based Authorizationと簡単に統合することができます。

0

Microsoft-s AzMan-Authorization Managerを見ましたか?

これには、操作 と、ロールを定義し、権限をマップしてxmlファイルに格納できるgui(azman.msc)を尋ねるプログラムが含まれています。あなたはのAzMan・オペレーション「CustomerAddを定義することができますで

ので、代わりのモジュール+操作を定義する(「顧客」に加えて「追加」)に近づく。

0

私は私の答えは後半のコーナーですが、私はちょうどだろう知っています複数の属性/パラメータが記述されているような動的アクセス制御ニーズがあるシナリオでは、属性ベースのアクセス制御(ABAC)とXACML(eXtensible Access Control Markup Language)を考慮する必要があります。これは、実装ABAC

あなたはこれらの参照サイトの両方の詳細を読むことができます:。

次のようなポリシーを定義することができます。

  • 顧客は、彼らが
  • 顧客を所有して料金を支払うことができ、彼らはに割り当てられ、法案は割り当てられた法案を表示することができます(子供などの場合)
  • 代理人が代理人に割り当てられた地域の請求書を管理することができます
  • ...
関連する問題