IISでページ単体にアクセス制限などをかける

小ネタ。IISでは接続元のIPアドレスによってアクセス制限を設定したりできる。説明を見ると大抵フォルダー単位で設定をしているが、それをファイル単位で設定する方法。

IISマネージャで

通常はこのようにフォルダまでしか表示されていないが

上にあるアドレスバーでファイル名までパスを入力してエンターを押すと

そのファイルだけツリーに表示される。これでフォルダにするのと同じようにファイルに設定を加えることができる。変な動作。

configファイル

結局のところIISマネージャで設定したものは.configファイルに書かれる。Default Web Siteの配下なら"C:\inetpub\temp\appPools\DefaultAppPool\DefaultAppPool.config"など。アクセス制限は以下のような記述。

  <location path="Default Web Site/ARFusen/Contents">
    <system.webServer>
      <security>
        <ipSecurity>
          <add ipAddress="192.168.1.1" allowed="false" />
        </ipSecurity>
      </security>
    </system.webServer>
  </location>

このpath属性にファイルのパスを入れれば別に普通にファイルでも動作する。まあでもIISマネージャーがインストールされている場合は、上書きされたりしても嫌なのでGUIで設定できたほうがいいよね。

以上

設計としてはフォルダで分けるほうが妥当なんだけど、今回は既に稼働済みのシステムでURLを変えずに特定ページのみ制限したかったのでやってみた。

コメント