トップ回答者
IISが基本認証のパスワードをキャッシュ?

質問
-
イントラネットのWindows 2008R2 + IIS 7.5 にて基本認証を有効にし、ADアカウントでログオンして閲覧するためのコンテンツを用意しています。
するとなぜか、ADユーザーアカウントのパスワードを変更しても、新旧どちらのパスワードでも基本認証でログオンできることに気が付きました。IISを再起動すると新パスワードでのみログオン可能となるため、IISが旧パスワードをキャッシュしているのでは、と推測しています。
IISでキャッシュしないように、あるいはごく短時間の有効期限しかキャッシュしないように変更したいのですが、どうすれば良いでしょうか?
回答
-
> Webサーバと同じActiveDirectoryに参加しているクライアントは全体の三分の一程度で、
> その他は異なるAD参加だったり、ワークグループ設定だったりします。一番最初の質問に、「ADアカウントでログオンして閲覧する」と書いてあったので、全てのユーザーが同じ AD ドメイン内のドメインユーザーで、個人に与えられたドメインユーザーアカウントを使ってログインすると思ってました。
> 利用者はいろいろな環境から使用するため、使い方(手順)を統一させたいと考えています。
そのために何が何でも基本認証を使うということであれば、IIS のキャッシュを何とかするしかなさそうです。
IIS のキャッシュの詳細は以下のページの「パスワードの変更をした後も、依然として古いパスワードが有効となる」のセクションを見てください。
IIS Insider
https://technet.microsoft.com/ja-jp/library/bb878030.aspx上記の記事は IIS6 以下のことを書いてますが、IIS7 でも同じということが以下の記事の 3. 項に書いてあります。
List of registry keys affecting IIS7 behavior
http://blogs.iis.net/ksingla/archive/2007/12/30/list-of-registry-keys-affecting-iis7-behavior.aspxところが、以下の記事によると UserTokenTTL の設定は IIS6 と違って IIS7.5 では効果がないとのことで、本当のところは、基本認証は触ったこともない自分には分かりません。
IIS7.5 - User Token Cache Timeout Ignored
http://forums.iis.net/t/1165120.aspx?IIS7+5+User+Token+Cache+Timeout+Ignoredとりあえず、自分の開発環境(Vista SP2 / IIS7)のレジストリを見てみましたが、UserTokenTTL というのは無かったです。それを追加したら効果があるかどうかは試してません。
質問者さんの方でチェックいただければと思います。
それはやりたくない、もしくはやっても効果がないということであれば、認証方式を変えるしか手はなさそうです。(もしくは諦める?)
三分の一のドメインユーザーにも、残り三分の二のドメイン外のユーザーにも「使い方(手順)を統一」したいということであれば、基本認証に変えて ASP.NET Forms 認証を使ってはいかがですか。
- 編集済み SurferOnWww 2015年4月8日 9:46 一部訂正
- 回答としてマーク S.Hara 2015年4月9日 4:54
すべての返信
-
チャブーンです。
以下のKBは参考にならないでしょうか。KBではOldPasswordAllowedPeriodレジストリ値をドメインコントローラ側で制御する、とあります。
http://support.microsoft.com/en-us/kb/906305
追記:基本認証はあくまで、クライアント=Webサーバ間のものなので、Webサーバ=ドメインコントローラ間でNTLM認証が使われれること鑑みれば、この項目は当てはまるように思われます。既定では60分この設定は有効(旧パスワードが使える)ので、それに当てはまればおそらくこれでしょう。ドメインコントローラの設定を変えたくない、という場合、Kerberosによる委任設定を基本認証と組み合わせることで、多分解消するように思います。したの資料が参考になるのではないでしょうか。
https://msdn.microsoft.com/ja-jp/library/aa292114(v=vs.71).aspx
- 編集済み チャブーンMVP 2015年4月7日 9:06
-
アドバイスありがとうございます。ドメインコントローラのレジストリ変更は影響範囲が大きそうで、躊躇しています。事前に検証環境を構築して試さないと怖いです。
そこで、このIISサーバのレジストリを修正してみましたが、やはり駄目でした。またグループポリシーで『対話型ログオン:キャッシュする過去のログオン数(ドメインコントローラが使用できない場合)』を 0 にしましたが、挙動は変わりませんでした。まぁ、ドメインコントローラと通信できる場合なので設定通りですね。
Windows2008R2のグループポリシーに同様の設定がないかと探しましたが、なさそうですね。
-
イントラネットの Active Directory ドメインサービス下で、ユーザーも Web サーバーもドメイン環境に属しいているのでしょうか?
であれば、統合 Windows 認証でシングルサインオンが使えると思うのですが、そうしない事情が何かあるのでしょうか?
- 編集済み SurferOnWww 2015年4月7日 9:22 誤字訂正
-
> Webサーバと同じActiveDirectoryに参加しているクライアントは全体の三分の一程度で、
> その他は異なるAD参加だったり、ワークグループ設定だったりします。一番最初の質問に、「ADアカウントでログオンして閲覧する」と書いてあったので、全てのユーザーが同じ AD ドメイン内のドメインユーザーで、個人に与えられたドメインユーザーアカウントを使ってログインすると思ってました。
> 利用者はいろいろな環境から使用するため、使い方(手順)を統一させたいと考えています。
そのために何が何でも基本認証を使うということであれば、IIS のキャッシュを何とかするしかなさそうです。
IIS のキャッシュの詳細は以下のページの「パスワードの変更をした後も、依然として古いパスワードが有効となる」のセクションを見てください。
IIS Insider
https://technet.microsoft.com/ja-jp/library/bb878030.aspx上記の記事は IIS6 以下のことを書いてますが、IIS7 でも同じということが以下の記事の 3. 項に書いてあります。
List of registry keys affecting IIS7 behavior
http://blogs.iis.net/ksingla/archive/2007/12/30/list-of-registry-keys-affecting-iis7-behavior.aspxところが、以下の記事によると UserTokenTTL の設定は IIS6 と違って IIS7.5 では効果がないとのことで、本当のところは、基本認証は触ったこともない自分には分かりません。
IIS7.5 - User Token Cache Timeout Ignored
http://forums.iis.net/t/1165120.aspx?IIS7+5+User+Token+Cache+Timeout+Ignoredとりあえず、自分の開発環境(Vista SP2 / IIS7)のレジストリを見てみましたが、UserTokenTTL というのは無かったです。それを追加したら効果があるかどうかは試してません。
質問者さんの方でチェックいただければと思います。
それはやりたくない、もしくはやっても効果がないということであれば、認証方式を変えるしか手はなさそうです。(もしくは諦める?)
三分の一のドメインユーザーにも、残り三分の二のドメイン外のユーザーにも「使い方(手順)を統一」したいということであれば、基本認証に変えて ASP.NET Forms 認証を使ってはいかがですか。
- 編集済み SurferOnWww 2015年4月8日 9:46 一部訂正
- 回答としてマーク S.Hara 2015年4月9日 4:54