WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

統合 Windows 認証での User.Identity.Name

by WebSurfer 8. June 2015 15:47

先の記事 では、基本認証の場合、IIS で資格情報がキャッシュされるという話を書きました。

この記事では、統合 Windows 認証においてもそれと似た話があって、User.Identity.Name で取得されるログインユーザーの Windows アカウント名が Web サーバーのキャッシュから取得されるという話を書きます。

Windows 認証が有効になっていて、かつ、現在ページ要求を行っているユーザーがログイン済みの場合、User.Identity.Name で取得されるのは DOMAIN\USERNAME の形式で表されるドメインユーザー名になります。(詳しくは先の記事 ASP.NET の ID オブジェクト を見てください)

ところが、Active Directory ドメインコントローラーでユーザー名を変更しても、User.Identity.Name で取得されるログインユーザー名に変更が反映されません(古いままになります)。

その具体例は stackoverflow の記事 IIS Returning Old User Names to my application に出ていますので、興味がありましたらそれをみて下さい。(手抜きですみません)

その理由は、Microsoft サポートの記事 KB946358 に書かれていますように、Web サーバーにユーザー名がキャッシュされ、キャッシュに情報が存在する場合はドメインコントローラーに照会せず、キャッシュされたユーザー名の情報を返すからです。

対応策は、

  1. ドメインユーザー名には将来にわたって変更する必要がないもの(例:社員番号)を使用する、または、
  2. KB946358 に従って Web サーバーのレジストリを書き換えてキャッシュを無効にする。

といったところでしょうか。

ただ、キャッシュするのはドメインコントローラーの負荷とネットワークトラフィックの削減のためだそうですので、キャッシュを無効にするとパフォーマンスに影響がありそうというところが気がかりではありますが・・・

Tags:

Authentication

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  June 2021  >>
MoTuWeThFrSaSu
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar