Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

最近のWindows Server付属のIISで無理矢理匿名認証っぽいことをする

Windows Serverの特定バージョン以降だとIISWebDAVの匿名認証が使えないという話。下記ページだと「IIS 7+」でdeprecatedだと書いてある。比較的最近の記事(2019年)だけど、IIS 7.0ってWindows Server 2008に付属のバージョンだぞ?

techcommunity.microsoft.com

ともかく、以下のコマンドじゃ効かなくなったということみたい(未確認)。

Set-WebConfigurationProperty -Filter '/system.webServer/security/authentication/anonymousAuthentication' -Location "(フォルダの場所)" -Name enabled -Value True

「推奨でもないし、Microsoftの製品サポートサービスPSS)のサポート対象でもない」(neither recommended nor supported by Microsoft Product Support Services (PSS))という但し書きつきで、上記サイトに対応方法が書いてある。いろいろ端折って書いてあるようなので、詳細に書き下すと以下のようになるみたい。

  1. 上記サイトにあるC#のソースを保存する(CustomBasicWebDAVModule.csとする)。
  2. CustomBasicWebDAVModule.csuserName = "test";password = "LS1setup!";を、実在するユーザ(匿名アクセス用ユーザ)のIDとパスワードに変更する。
  3. CustomBasicWebDAVModule.csからDLLを作成する。たとえば CustomBasicWebDAVModule.csと同じフォルダで以下のようにコマンドを実行すれば、CustomBasicWebDAVModule.dllができる。

    C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\csc.exe -target:library CustomBasicWebDAVModule.cs
    
  4. できたCustomBasicWebDAVModule.dllWebDAVサイトのbinフォルダ直下に格納する。

  5. サイトのWeb.configに以下の設定を追加する。

    <modules runManagedModulesForWebDavRequests="true">
      <add name="CustomBasicWebDAVModule" type="CustomBasicWebDAVModule"/>
    </modules>
    
  6. WebDAVサイトの設定で、Basic認証を有効にする。たとえば以下のように実行する。

    Set-WebConfigurationProperty -Filter '/system.webServer/security/authentication/basicAuthentication' -Location "(フォルダの場所)" -Name enabled -Value True