トップ回答者
統合Windows認証でのUser.Identity.Nameについて

質問
-
はじめまして、統合Windows認証でのUser.Identityについて質問させていただきます。
どなたかご存知の方がいらっしゃればお教えください。
環境:WindowsServer2008R2 IIS7.5 マネージパイプラインモード 統合
ASP.net .net Framework 4 統合Windows認証設定
接続対象者は全て同一のドメインにて認証されたイントラ環境であり、接続にはIE8、IE9を使用
現在、統合Windows認証にてUser.Identity.Nameよりログインユーザ名を取得して使用者の判定を行っております。
数日前より、ある社員のログインユーザ名が正しく取得出来ないため調査しております。
今月1日に人事異動があり「ActiveDirectoryにてログインユーザ名が変更」されており、ログインに使用しているユーザ名も設定された新しいものなのですが、
User.Identity.Nameにて取得できるログインユーザ名が古いままなのです。
ActiveDirectory管理は他部署のため、そちらの情報の詳細は確認できないのですが、RDN等は正しいものが設定されているように見えます。
※確認にはエクスプローラのセキュリティ設定に使用する「ユーザ、コンピュータ、サービスアカウントまたはグループの選択」よりドメインを検索して確認
User.Identity.Nameへ設定される情報はどこより参照され、設定されるのでしょうか?
IIS上で接続されたユーザ情報を保持する仕組みなどはあるのでしょうか?
もしご存知の方がいらっしゃればお教えいただければと思います。
それではなにとぞよろしくお願いいたします。
以上
- 編集済み syou.rf 2015年4月9日 7:25
回答
-
> User.Identity.Nameへ設定される情報はどこより参照され、設定されるのでしょうか?
まず、User.Identity ですが、これは現在ページ要求を行っているユーザーを表す ID オブジェクトを取得します。
Windows 認証か Forms 認証かによって異なりますが、Windows 認証でログイン済みユーザーの場合は、そのユーザーのアカウントの WindowsIdentity オブジェクトが取得されます。
なので、User.Identity.Name は WindowsIdentity.Name、すなわち DOMAIN\USERNAME の形式で表される対象ユーザーの Windows ログオン名になるはずです。
詳しくは以下のページを見てください。
ASP.NET の ID オブジェクト
http://surferonwww.info/BlogEngine/post/2014/01/20/id-objects-in-aspnet-page.aspx
質問者さんのケースで何故古いままになってしまうのかは、多分第三者には分からないのではないかと思います。以下のページに書いたようなコードで情報が取得できますので、それらを参考に質問者さんの環境で問題のユーザーのアカウント情報を取得して調べていただくほか方法はなさそうです。
Windows 認証でのロール
http://surferonwww.info/BlogEngine/post/2011/02/05/Role-in-Windows-Authentication.aspx
すべての返信
-
> User.Identity.Nameへ設定される情報はどこより参照され、設定されるのでしょうか?
まず、User.Identity ですが、これは現在ページ要求を行っているユーザーを表す ID オブジェクトを取得します。
Windows 認証か Forms 認証かによって異なりますが、Windows 認証でログイン済みユーザーの場合は、そのユーザーのアカウントの WindowsIdentity オブジェクトが取得されます。
なので、User.Identity.Name は WindowsIdentity.Name、すなわち DOMAIN\USERNAME の形式で表される対象ユーザーの Windows ログオン名になるはずです。
詳しくは以下のページを見てください。
ASP.NET の ID オブジェクト
http://surferonwww.info/BlogEngine/post/2014/01/20/id-objects-in-aspnet-page.aspx
質問者さんのケースで何故古いままになってしまうのかは、多分第三者には分からないのではないかと思います。以下のページに書いたようなコードで情報が取得できますので、それらを参考に質問者さんの環境で問題のユーザーのアカウント情報を取得して調べていただくほか方法はなさそうです。
Windows 認証でのロール
http://surferonwww.info/BlogEngine/post/2011/02/05/Role-in-Windows-Authentication.aspx -
質問者さんのケースで変更前のユーザ名になってしまう原因は、Kiyokura さんが提示された URL に書かれているように Web サーバーのキャッシュにある古い情報(変更前のユーザーの Windows ログオン名)を取得してくるからというのが一番あやしそうです。
それが原因であれば、対応策は、(1) http://support.microsoft.com/kb/946358 に従って Web サーバーのレジストリを書き換えてキャッシュを無効にする、または、(2) id には将来にわたって変更する必要がないもの(例:社員番号)を使用する、ということになりそうです。
今さら上記 (2) は無理でしょうから、選択肢は (1) ということでしょうか? キャッシュを無効にすると、パフォーマンスに影響がありそうというところが気がかりではありますが・・・
- 編集済み SurferOnWww 2015年4月10日 8:40 脱字追加