ASP .NET MVC について調べているときに、Authorize 属性について説明しているセクションにたどり着きました。Authorize 属性は、ユーザーがコントローラーに対して認証されているかどうかを確認するために使用されると書かれています。これは本当ですか? この属性は承認目的で使用するように設計されていることは知っていますが、この属性を認証に使用するのもベスト プラクティスですか?
そうでない場合、ベストプラクティスは何ですか?検証中(実行していない)認証?
もしそうなら、なぜこのようにするのでしょうか? 何か見落としているのでしょうか?
ベストアンサー1
Authorize
属性は、ユーザーがログインしているかどうかを確認するために使用できます。また、ユーザーが特定のロールのメンバーであり、特定の名前を持っているかどうかを確認するためにも使用できます。
本質的には、Web フォームを使用するとき<authorization>
に sectionによって処理されるのと同じことを行います。web.config
認証方法は指定しません。Webフォームと同様<authentication>
にセクションごとに処理されます。web.config
編集(認証と承認についての説明):
認証は本人確認つまり、ユーザーが誰であるかを確認します。これは、ユーザー名とパスワードの確認、Windows 認証トークンの確認、網膜スキャン、音声認識などによって実行できます。
認可とは、アクセスを制限する特定のリソースへのアクセスを、特定の基準を満たすユーザーに許可します。リソースへのアクセスをユーザーに許可するには、ユーザーが持つ権限を知っておく必要があります。それを確認するには、まずユーザーが誰であるかを知っておく必要があります。そのため、ユーザーは認証される必要があります。
基本的に、空の[Authorize]
属性は認証ではなく承認を行います。つまり、あなたが誰であるかをチェックしません。検証した人がリソースにアクセスできるかどうかをチェックするだけです。ただし、承認基準は「正常に認証された人」です。別の基準を指定することもできます。つまり、実際には認証ではなく承認を行っています。