none
Request.ServerVariables("REMOTE_USER")が空の文字列を返す

    質問

  • APS.NETでWEBアプリを開発しています。

    Visual Studio 2005で作成したプロジェクトをVisual Studio 2017で変換を行いました。

    ログインユーザーIDを取得したいのですが、
    Request.ServerVariables("REMOTE_USER")
    で空の文字列が返ってきました。
    ※Windows認証モード

    VS2005では、ログインユーザーIDが取得できていました。
    VS2017では、なぜ空の文字列なのでしょうか。
    バージョンが上がってRequest.ServerVariables("REMOTE_USER")は使用できないのでしょうか。

    Request.ServerVariables("REMOTE_USER")でログインユーザーIDを取得する方法を
    ご存知の方がいらっしゃいましたら教えて頂けますでしょうか。

    ちなみに、
    Request.LogonUserIdentity.Name
    ではログインユーザーIDが取得できました。

    よろしくお願いいたします。

    環境
    VisualStudio2017community
    VisualBasic2017

    ※追記:実行方法

    ローカルにモジュールを置いての実行で、今回の事象が発生しています。

    2018年2月5日 13:14

回答

  • > >Web アプリは IIS 上で動かしていますか?
    > 動かしていないです。

    質問者さんの開発マシンの OS が何だか分かりませんが(そういう基本のキ的な情報は質問の一番最初に書きましょうね)、Professional エディションならローカル IIS を使えますので、Web アプリを IIS 上で動くようにしてください。

    Windows 認証は Windows の機能に依存するもので、Internet Explorer と IIS の組み合わせでなければ実現できないそうです。(他の組み合わせでできたとしてもたまたまで、Microsoft が保証しているわけではなさそうです)

    > VisualStadioから「デバッグなしで開始」で動かしました。

    それは多分 IIS Express 上で動いていると思います。

    IIS Express でも Visual Studio でプロジェクトのプロパティを設定することで Windows 認証が使えるという話を聞きます。

    自分は使ったことがないし、IIS と完全に同じ機能になるのかどうかは不明ですが、簡単に設定できそうなので、物は試しということで、試してみてはいかがでしょう。

    • 回答としてマーク HAHAHA2017 2018年2月6日 7:27
    2018年2月6日 5:11

すべての返信

  • HAHAHA2017 さん、こんにちはフォーラム オペレーターの立花です。
    MSDN フォーラムへの投稿ありがとうございます。

    内容から ASP.NET フォーラムの方が情報が寄せられやすいように
    みえましたので移動いたしますね。

    .Net Framework > ASP.NET

    それでは皆様からの投稿をお待ちください。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 立花楓

    2018年2月6日 0:12
    モデレータ
  • 確認ですが、以下のページに書かれていることを試されましたでしょうか?

    [PRB] ASP.NET で Request.ServerVariables("LOGON_USER") が空の文字列を返す
    https://support.microsoft.com/ja-jp/help/306359/prb-request-servervariables-logon-user-returns-empty-string-in-asp-net


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年2月6日 0:39
    モデレータ
  • trapemiya さん
    教えて頂いた投稿を確認しましたが、解決しませんでした。

    実行方法について、記載が漏れていました。
    ローカルにモジュールを置いての実行で、今回の事象が発生しています。
    よろしくお願いします。
    2018年2月6日 1:34
  • > VS2005では、ログインユーザーIDが取得できていました。
    > VS2017では、なぜ空の文字列なのでしょうか。

    匿名認証でアクセスしているからではないかと思います。

    Web アプリは IIS 上で動かしていますか? 以下の画像のように、匿名認証は無効になっているでしょうか? 匿名認証が有効になっていると、当然匿名アクセスになって、ログインしてないのだから「ログインユーザーID」は取得できません。

    > バージョンが上がってRequest.ServerVariables("REMOTE_USER")は使用できないのでしょうか。

    Visual Studio のバージョンは関係ないです。

    ASP.NET の Request.ServerVariables プロパティは IIS と連携して情報を取得する機能ですので、バージョンが関係するとすれば IIS のバージョンでしょうが、IIS 10 でも REMOTE_USER は取得できます。

    念のため自分の開発環境で検証してみましたが、IIS 10 上の画像の Web アプリ (WindowsAuthentication) の場合は以下の結果になります。

    Key: AUTH_TYPE
    Value 0: Negotiate
    Key: AUTH_USER
    Value 0: MYCOMPUTER\surfe
    Key: AUTH_PASSWORD
    Value 0:
    Key: LOGON_USER
    Value 0: MYCOMPUTER\surfe
    Key: REMOTE_USER
    Value 0: MYCOMPUTER\surfe


    試しに匿名認証を許可してみると(Windows 認証では本来匿名アクセスを許可しません)以下の通り取得できません。

    Key: AUTH_TYPE
    Value 0:
    Key: AUTH_USER
    Value 0:
    Key: AUTH_PASSWORD
    Value 0:
    Key: LOGON_USER
    Value 0:
    Key: REMOTE_USER
    Value 0:

    2018年2月6日 2:27
  • SurferOnWww さん
    ご回答ありがとうございます。

    >Web アプリは IIS 上で動かしていますか?
    動かしていないです。
    VisualStadioから「デバッグなしで開始」で動かしました。

    私の知識不足によりに理解できない点があります。
    ご回答頂いた内容を調べてから質問させていただきます。

    2018年2月6日 4:37
  • > >Web アプリは IIS 上で動かしていますか?
    > 動かしていないです。

    質問者さんの開発マシンの OS が何だか分かりませんが(そういう基本のキ的な情報は質問の一番最初に書きましょうね)、Professional エディションならローカル IIS を使えますので、Web アプリを IIS 上で動くようにしてください。

    Windows 認証は Windows の機能に依存するもので、Internet Explorer と IIS の組み合わせでなければ実現できないそうです。(他の組み合わせでできたとしてもたまたまで、Microsoft が保証しているわけではなさそうです)

    > VisualStadioから「デバッグなしで開始」で動かしました。

    それは多分 IIS Express 上で動いていると思います。

    IIS Express でも Visual Studio でプロジェクトのプロパティを設定することで Windows 認証が使えるという話を聞きます。

    自分は使ったことがないし、IIS と完全に同じ機能になるのかどうかは不明ですが、簡単に設定できそうなので、物は試しということで、試してみてはいかがでしょう。

    • 回答としてマーク HAHAHA2017 2018年2月6日 7:27
    2018年2月6日 5:11
  • SurferOnWww さん

    >質問者さんの開発マシンの OS が何だか分かりませんが(そういう基本のキ的な情報は質問の一番最初に書きましょうね)
    失礼しました。
    開発マシンのOSは、Windows10 Pro です。

    >Professional エディションならローカル IIS を使えますので、Web アプリを IIS 上で動くようにしてください。
    IISの構築については、これから勉強します。

    >IIS Express でも Visual Studio でプロジェクトのプロパティを設定することで Windows 認証が使えるという話を聞きます。
    Visual Studio でプロジェクトのプロパティを設定したところ(Windows認証:有効、匿名認証:無効)、
    Request.ServerVariables("REMOTE_USER")でログインユーザーIDを取得することができました。
    ありがとうございました。

    SurferOnWww さんに回答マークを付けさせていただきます。
    2018年2月6日 7:27