WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

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

by WebSurfer 2015年6月8日 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月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar