by WebSurfer
2015年5月27日 16:15
IIS で基本認証を使用している場合、パスワードの変更をした後も、依然として古いパスワードが有効になる(すなわち、新旧パスワードのどちらでもログインできる)という話を書きます。
基本認証はあまり使われてないようなので、ここに書いたような問題に遭遇することはまれかもしれませんが、理由と対処方法を調べたので備忘録として書いておきます。
まず、理由ですが、Microsoft の TechNet の記事 IIS Insider の「パスワードの変更をした後も、依然として古いパスワードが有効となる」のセクションに書いてあるように、"ユーザーのログオン資格情報は、基本認証および匿名認証の両方で、IIS 上に 15 分間キャッシュされます" ということによります。
キャッシュするのはパフォーマンスの向上のためですが、何らかの事情でデフォルトの 15 分は長すぎるという場合は調整は可能です。
具体的には、Microsoft サポートの記事 IIS におけるユーザー トークンのデフォルトの間隔の変更 に書いてありますように、レジストリで変更することができます。
上の記事は IIS6 以下が対象ですが、ブログの記事 List of registry keys affecting IIS7 behavior の 3. 項によると、レジストリ UserTokenTTL の設定については IIS7 に関しても同じとのことです。
実際、IIS7.5 を使っているユーザーがレジストリに UserTokenTTL を新規登録(既存ではないとのこと)したところ、キャッシュの有効期限をコントロールできるようになったという報告があります。
ただし、一番上に紹介した記事に書いてありますように、"キャッシュが存在しない場合、すべてのアクセスで、認証を行う必要があり、パフォーマンスが大幅に低下する可能性があります" とのことですので、あまり短くするのは避けた方がよさそうです。