あなたは、一般的な建築やベストプラクティスの問題について尋ねている場合は、私はクレームベース認証を見てお勧めします:、ユーザー名のグループを確認し、このコードを使用する
。特にActive Directory Federation Services(ADFS)。
基本的には、ユーザーがグループに基づくよりも細かいレベルでできることを制御する必要があるようです。グループメンバーシップは非常に幅広い場合があります。たとえば、「ユーザー」のすべてのユーザーが同じ権利を持つわけではなく、「販売」のすべてのユーザーが同じアクセス権を持つわけではありません。しかし、 "Sales - Managers"、 "Sales - Employees"、 "Sales - Executives"などのようなグループを作成したくない場合は、すぐに扱いにくくなります。グループの完全な配分を設計するのにどれだけの時間を費やしても、数年後にはセールスマネージャーの一部のサブセットが他のセールスマネージャーが行うことができないものがあるため、すべてが変更されます。
この問題を回避するために、クレームベースの認証が使用されています。グループメンバーシップレベルで権利を指定するのではなく、ユーザーが特定の "クレーム"を持っているかどうかをコードでチェックインするだけです。あなたは、あなたのアプリケーションに合った多くの主張を作成することができます。 「生年月日の変更」、「1000ドル以上の支払いの許可」などのクレームを持つことができます。
クレームはあなたのユーザーの身元に付けられているだけで、スレッドの現行の原則で利用できます。
ここで、あなたはあなたが求めるこれらの「請求」をどのように割り当てられますか?あなたがADFSを使用しているなら、とにかく欲しいです。あなたは明らかにADグループのメンバーシップに基づいてそれを行うことができます。データベース検索に基づいて行うことができます。あなたが望むなら、それは1日または1年の時間に行うことができます。
重要な点は、クレーム発行とクレーム実施が完全に独立しており、相互に影響を与えることなく独立して変更できる点です。あなたのコードはちょうど「こんにちは、この男は1000ドル以上の支払いをすることができるという主張があります。だから私は彼にそれをさせてくれるでしょう。なぜ彼はその主張を持っているのですか?そして、あなたのADFSは、それが適合していると思われる基準に基づいてクレームを発行することができます。たとえば、「ユーザーがManagersグループのメンバであるか、セキュリティデータベースのSuperUsersテーブルにエントリがある、または「Tim Timsky」という名前の場合、彼は$ 1000以上を費やすことが許可されます。
したがって、私のオプションを制限するグループレベルでのみ "、それは最も確かに必要はありません。新しい、緑色のフィールドプロジェクトを開始する場合、ADFSのような新しいツールは、より簡単に多くのオプションを提供します。
もちろん、すべての抽象化には複雑さが増すという警告が付いています。これはあなたのシステムに導入している別の部分です。アプリケーションをデカップリングして、より抽象度の高いレイヤーと機能を導入することができます。しかし、そのレイヤーを導入する価値があるかどうかは、アプリケーションの使用方法によって異なります。アプリケーションが「マネージャ」と「ユーザー」を区別する必要がないと思うなら、クレームベースの認証は過度の殺害です。しかし、時間が経つにつれて、曖昧で変化するルールに基づいて異なるユーザーに割り当てられる必要がある、アプリケーション内のさまざまな機能や機能が異なると思われる場合は、クレームベースの認証によってソリューションがより綺麗になります。
いつものように、2つの部分をデカップリングすることの正味の利点は、1つが他の部分と独立してどのくらいの頻度で変化するかによって決まります。
ASP.NET 2.0でWindows認証を使用する方法を見てください - http://msdn.microsoft.com/en-us/library/ff647405.aspx – jrummell