このwinauthアプリケーションでは、admin.aspxへのアクセスを許可するユーザーを制御するために、「admin」と名付けたグループを利用する。そこでまずは、「コンピュータの管理」でadminグループを作り、管理ページ(admin.aspx)へのアクセスを許可したいユーザーをこのグループに所属させる(図18.5および図18.6)。
次に、admin.aspxのACLを図18.7に示すように編集し、最低限のユーザーにのみアクセスが許可されるように修正する。なお、こうしてUsersグループの読み取り権を取り除くときは、明示的にアカウント「ASPNET」へ読み取り権を与えなければならない。
winauthアプリケーションではリスト18.4に示すweb.configを利用しているが、実のところこのweb.configはなくても特に問題はない。ASP.NETの認証モードは、デフォルトでWindows認証に設定されているからだ。つまり、本連載で示してきたすべてのサンプルは、暗黙的にWindows認証の下で動作してきたのである(匿名アクセスを許可していてはあまり意味がないが)。ただ、今回は匿名アクセスを防ぐ目的でリスト18.4に示す簡単なweb.configを使う。
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
リスト18.4に示したweb.configでは、認証モードを設定するauthentication要素と、URL認定を設定するauthorization要素を記述してある。authentication要素では、mode属性に表18.1に示すいずれかの値を指定して認証モードを設定する。
mode | 機能 |
---|---|
Windows(デフォルト) | Windows認証。IISによる認証結果をそのままASP.NETの認証として利用し、ファイル認定、URL認定にも用いる |
Forms | フォーム認証。独自のユーザー・データベースと認証プロセスを実装できる |
Passport | パスポート認証 |
None | ASP.NETの認証や認定を無効化する(カスタム認証に利用) |
表18.1 authentication要素のmode属性 |
なお、authentication要素を含むweb.configは、必ずアプリケーション・ルート(仮想ディレクトリとして指定したディレクトリ)に格納しなければならない。これはアプリケーションを構成するすべてのディレクトリで、同一の認証モードが正しく適用されるようにするためである。
URL認定を設定するauthorization要素では、匿名アクセスを拒否するために以下の1行を記述している。Windows認証でこの設定がなされた場合は、IUSR_<コンピュータ名>によるアクセスが拒否されるようになる。
<deny users="?" />
IISマネージャの設定でも匿名アクセスを拒否しているので、これは必ずしも必要な設定ではないが、念のため指定しておくべきだろう。IISで匿名アクセスが許可されていても、この設定があれば図18.8に示すようにエラーが表示される。
Copyright© Digital Advantage Corp. All Rights Reserved.