Windows Identity Foundation (WIF) には、 というクラスがありClaimsPrincipalPermission
ます。MSDN のドキュメントは非常にまばらです。それは述べています:
ClaimsPrincipalPermission は、リソースへのアクセスに必要なアクセス許可を表します。ClaimsPrincipalPermission は、アクセスするリソースを表す文字列と、リソースに対して実行するアクションを表す文字列を受け取ります。Demand が呼び出されると、プリンシパルは、指定されたリソースに対して指定されたアクションを実行するためのアクセス許可を持っている必要があります。そうでない場合、Demand は例外をスローします。
これはカッコいい。関数に属性を設定して、許可されたユーザーだけがその関数を呼び出せるようにすることができます。この機能を動作させるのに問題はありません。
ただし、別の問題があります。特定のユーザーのみがアクセスできる多くの機能を備えた Web アプリケーションに取り組んでいます。ログインしたユーザーがアクセスできる機能を備えたページへのリンクのみを表示するようにページをコーディングしたいと考えています。
ClaimsPrincipalPermission でこれを行う唯一の方法は、次のことです。
Dim foo As ClaimsPrincipalPermission foo = New ClaimsPrincipalPermission(resource:="SECRET_FUNCTION", action:="EXECUTE") Try foo.Demand() response.write(Link_To_Execute_Secret_Function) Catch ex As Exception response.write("No access to Secret Function") End Try
私の上司は、そのような「例外によるコーディング」は容認できないことを私にはっきりと伝えました。この種のものを小さなライブラリにカプセル化できると確信していますが、WIF がこれにどのように使用されることを意図しているか知りたいです。
ところで、WIF で特定の Web ページへのアクセスを自動的にチェックできることは承知していますが、このプロジェクトのアーキテクトは、Web ページの URL ではなく、制限する機能の名前を指定したいと考えています。
どうするのが一番いいですか?
アップデート
これまでのところ、私が見つけた最善の方法は、結果を軽減するために例外によってプログラミングをカプセル化することです...