はじめに
開発中のWebサイトにアクセスしたら、突然認証ダイアログが表示されるようになってしまった。
前日の終業間近に「2018 年 5 月の更新プログラム適用によるリモート デスクトップ接続への影響」の件でWindows Server 2016にパッチをあてたこともあり、これが原因かも知れないとパッチをアンインストールしたものの、結果は変わらず。
ネットで調べて、IISのアプリケーションプールのIDを「Local System」から「Network Service」、「ApplicationPoolIdentity」、「Local Service」とかに変更してみた。
変更したことにより認証ダイアログは表示されなくなったが、逆に内部サーバーエラーとなり余計に訳が分らなくなった。
元の状態に戻す
サーバーは仮想環境で構築されており、たまたまメンテナンス関係で月曜日のバックアップが残っていたため、月曜日の状態に戻してもらった。
戻った状態で試してみると、認証ダイアログが表示されなくなっていたのでパッチを適用したことで何か起きたのかと思った次第です。
当日までの作業状態に戻すためにファイルやデータベースの変化点をコピーして、最後に共有フォルダを設定した後にWebサイトにアクセスしたら認証ダイアログが再度表示されるようになった。
原因
共有フォルダを設定したのが原因でした。(そういえば朝礼後に共有フォルダの設定をしたな・・・)
Webサイトのwwwrootフォルダには初期状態でアクセス許可に「IIS_IUSRS」や「IUSRS」が付くようになっています。今回はその親フォルダ(一般的にはinetpub、今回はEドライブの専用フォルダ)を共有しました。
親フォルダを共有した際に下図のように確認画面が表示されたが、この時にはアクセス許可の違いに気が付いていないため、そのまま「設定の変更」ボタンをクリックしました。
そもそも「以下の表示されているフォルダーは以前に共有されていました。」では分からない、共有しようとしているところで、以前に共有されていましたって書いてあれば別に問題ないと思うわけですよ。
親フォルダのアクセス許可が反映されたことで、wwwrootフォルダから「IIS_IUSRS」や「IUSRS」が削除されてしまいました。
対応
wwwrootフォルダに「IIS_IUSRS」や「IUSRS」などのアクセス許可を付け直した。
最後に
Webサイトの設定変更する際に、いつもリモートデスクトップ接続した画面内で設定変更していたのですが、今回テスト作業でお手伝いする人が付き、テストで頻繁に設定変更するため、利便性を考えて共有フォルダ化したのです。
今回、原因のアクセス許可が削除されていたことに気が付かなくて何だかんだで半日潰してしまいました。
認証ダイアログが表示されるのではなく最初から内部サーバーエラーなら直ぐにアクセス許可に気がついたのか、まー調べ方が違ったかも知れないな。
トラブルが発生したときに別のトラブルが出てくると冷静になりにくい。冷静な時なら変化点により原因にすぐ辿りつくのにさ。