none
統合Windows認証でのUser.Identity.Nameについて RRS feed

  • 質問

  • はじめまして、統合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
    2015年4月9日 7:22

回答

すべての返信

  • > 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

    • 回答の候補に設定 星 睦美 2015年4月15日 6:18
    • 回答としてマーク 星 睦美 2015年4月20日 1:00
    2015年4月9日 8:09
  • 細かい内容は追い切れていないですが、こちらの内容は現象が似ているように思いますがいかがでしょうか。

    IIS Returning Old User Names to my application


    きよくらならみ

    • 回答の候補に設定 星 睦美 2015年4月15日 6:18
    • 回答としてマーク 星 睦美 2015年4月20日 1:00
    2015年4月9日 23:56
    • 回答としてマーク 星 睦美 2015年4月15日 6:18
    • 回答としてマークされていない 星 睦美 2015年4月15日 6:18
    • 回答の候補に設定 星 睦美 2015年4月15日 6:18
    • 回答としてマーク 星 睦美 2015年4月20日 1:00
    2015年4月10日 0:10
  • ちょっと他の作業に追われておりました、すみませんでした。

    >SurferOnWww 様

    やはりアカウント情報取得が最優先ですね、申請を出してみます。

    また、どういう状態になっているのか、どのような作業を行ったのかが分かればご報告いたします。

    >きよくらならみ 様

    情報提供ありがとうございます、確認させていただきます。

    >なちゃ 様

    すみません環境の書き忘れがありました、クライアントはWindows7です。

    ちょっと関係あるか分かりませんが、確認させていただきます。

    2015年4月10日 7:31
  • 質問者さんのケースで変更前のユーザ名になってしまう原因は、Kiyokura さんが提示された URL に書かれているように Web サーバーのキャッシュにある古い情報(変更前のユーザーの Windows ログオン名)を取得してくるからというのが一番あやしそうです。

    それが原因であれば、対応策は、(1) http://support.microsoft.com/kb/946358 に従って Web サーバーのレジストリを書き換えてキャッシュを無効にする、または、(2) id には将来にわたって変更する必要がないもの(例:社員番号)を使用する、ということになりそうです。

    今さら上記 (2) は無理でしょうから、選択肢は (1) ということでしょうか? キャッシュを無効にすると、パフォーマンスに影響がありそうというところが気がかりではありますが・・・


    • 編集済み SurferOnWww 2015年4月10日 8:40 脱字追加
    2015年4月10日 7:46