4

権利管理のためにクレームを使用するためのベスト プラクティスはありますか?

新しい .net 4.5 と新しいクレーム クラスを使用しています。現在、私はそのようなことをしています:

new ClaimsIdentity(new List<Claim>
                    {
                        new Claim("Username", user.UserName),
                        new Claim("UserNumber", user.UserNumber.ToString()),
                        new Claim("Creation_Right", ""),
                        new Claim("Edit_Right", "")
                    }

値なしで right-claims を追加します。後で、権利の存在を確認します。値 (true/false など) は必要ありません。値が存在する場合は、暗黙の ' true ' になります。

それを行うより良い方法はありますか?

4

1 に答える 1

1

多分。あなたがしていることは、認証と認可を一緒にマージし、認証の時点でアクセス ポリシーの決定を行っているようです。

承認コンポーネントを認証コンポーネントから分離するオプションもあります。クレームは、承認の決定に使用できるユーザーに関する一連の情報を表します。つまり、認証ステップで一連のクレームが生成され、ユーザーが何かにアクセスしようとするたびに、それらのクレームが承認コンポーネントに送られ、決定が下されます。

これにより、クレーム発行システムとは独立して承認ポリシーを変更および進化させることができるという点で、ある程度の柔軟性が得られます。たとえば、誰かを管理者として識別するロール クレームを発行したり、ユーザーのログオン方法 (スマート カードやユーザー名とパスワードなど) を指定する認証方法クレームを発行したりすることができます。これにより、アクセス ポリシーを定義する力が得られます。一部のリソースへのアクセスには管理者ロールのみを要求できますが、他のより機密性の高いリソースには管理者ロールと強力な認証メカニズムの使用が必要です。また、コンテキストに応じて複数の異なるアクセス ポリシーを切り替えることができることも意味します。あなたのオンライン ウイスキー ストアは、米国では ageOver21 クレームを使用しているかもしれませんが、サイトのカナダ バージョンでは、代わりに over18 または over19 クレームが必要です。

于 2012-06-27T15:38:14.240 に答える