2011-09-28 16 views
8

Windows認証を使用するMVC 3を使用してASP.NET 4.0でASP.NETアプリケーションを使用しています。IIS7でのASP.NET認証の問題 - Windows認証でUser.Identity.Nameが空です

Visual Studio 2010から実行すると、すべて正常に動作しますが、IIS7にロールアウトすると、Windowsにログインしたユーザーは決して入力されません(User.Identity.Nameを確認します)。ユーザー資格情報のダイアログプロンプトも表示されません。

のweb.configの設定:(図示されている匿名の禁断の403での結果と無コンテンツを無効にする)匿名であるよう

<authentication mode="Windows" /> 

がIISで、私は、Windows認証が有効になっていることを見ることができます。

"カーネルモード認証"(useKernelMode = "true")の有効化と無効化の両方を試みましたが、これは違いはありません。認証を正しく動作させるには、別のサーバーの別のサイトでこの設定を無効にする必要があることを覚えていますが、スタックの下に潜在的な問題がある可能性があります。

<security> 
    <authentication> 
    <anonymousAuthentication enabled="true" /> 
    <digestAuthentication enabled="false" /> 
    <basicAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true" useKernelMode="false"> 
     <providers> 
     <clear /> 
     <add value="NTLM" /> 
     </providers> 
    </windowsAuthentication> 
    </authentication> 
</security> 

問題は何ができるか任意のアイデア:

ケースでは、IISのapplicationHost.configのから、便利ですか?

ご意見ありがとうございます。

アップデート1

私は上のテストするために、別のIIS7サーバーを見つけることができたと、私は必要に応じて、すべてが働いていた匿名アクセスを無効にした場合、私が見つかりました。しかし、匿名アクセスを無効にしても、元のIIS7サーバーにはまだ問題があります(今は匿名を無効にしています)。だから私は推測するスタックをさらに下にいくつかの問題がある必要があります。何か案は?私が想像しているように私はそれをポップアップし続けているように修正する必要があります。私はその後、私は、ログインプロンプトダイアログでチャレンジしています問題IIS7ボックスでダイジェスト認証を有効にした場合

アップデート2

、すべてが、私は、適切な資格情報を提供する場合は期待どおりに動作します。しかし、すでにドメインにログインしているユーザーの内部Webアプリケーションであるため、私たちは本当にこのように挑戦したくありません。資格情報は、2番目のIIS7ボックスで動作するように透過的に渡される必要があります。

アップデート3

いくつかの進捗状況...私が見つけたそのWebアプリは、以下の認証を与えるために、直接IIS7のためにapplicationHost.configファイルを編集して、サブサイトのルートにあるとされていない場合設定は期待通りにサイトが動作することができます:認証を設定するには、IIS7のUIを使用して

<authentication> 
    <anonymousAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true"> 
    <providers> 
     <clear /> 
     <add value="NTLM" /> 
    </providers> 
    </windowsAuthentication> 
    <digestAuthentication enabled="false" /> 
</authentication> 

はかなり右の結果を与えるものではありません。 (IIS7が継承されていると仮定しているように)認証項目が欠落しているか、間違った設定(windowsAuthenticationが正常に機能するためには上記のプロバイダ設定を必要とするようです)。

残念ながら問題のWebアプリケーションは実際には内部バージョン(Windows認証> www.siteを使用しているため)のサブアプリケーションです。com/internal)と外部バージョン(フォーム認証> www.site.com/externalを使用)を使用します。私はまだサブアプリケーションとして動作する認証を得ることができません。私はちょうど "エラーコード:403禁止"を取得します。

+0

これをチェックしてください:http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –

+0

あなたはどのブラウザでテストしていますか?それがFirefoxの場合は、チェックアウトしたいかもしれません:https://addons.mozilla.org/en-US/firefox/addon/integrated-auth-for-firefox/ FirefoxはWindows認証を正しく「有効」にしていませんボックス。 – NotMe

+0

乾杯していますが、何も助けてくれませんでした。この男は、web.configの設定が間違っていたため(VSまたはIISで動作できなくなったため)、Windows認証の取得に問題があるようです。私はVSですべてうまく動作しますが、それは物事が期待どおりに動作していないIISです。 – Gavin

答えて

3

この場合は、Microsoft ISA Serverの問題でした。要求がWindows認証済みサイトのISA経由で内部的にルーティングされていたようだが、ISAが削除されると問題は消えた。

私はISAについて多くのことを知りませんし、どのようにリクエストをルーティングしているのですか?誰かが設定したルールのため、リクエストからいくつかの重要な情報を取り除かなければならないと仮定します。

同様の設定を診断する際の助言として、ネットワーク管理者がISA経由で内部トラフィックをルーティングしていないと言われましたが、内部でpingを実行するとISAが実際に動作していました。

0

匿名アクセスを無効にすることは別のサーバーでは機能していたが、メインサーバーでは403エラーが発生していると述べました。したがって、私はあなたのサイトが実行されているフォルダのファイルベースのアクセス許可をチェックします。過去に私は\ Network Serivceアカウントにサイトフォルダーとすべてのサブフォルダーに対するフルコントロールを許可する必要がありました。そうしないと403エラーが発生します。動作しているサーバー上のファイルのアクセス許可を確認し、動作していないサーバーとの違いがないかどうかを確認します。

また、これは問題ではない場合は、2つのサーバー間の他のすべてのIIS設定を比較することをお勧めします。違いを見つける。

+0

ありがとうPaige、でもまだ喜びはありません。ネットワークサービスはフォルダへの完全なアクセス許可を持ち、アプリケーションプールでも使用されます。私はサーバーを比較していますが、今のところ明らかな違いはありません。私はそれが別のボックスのために異なっている広告構成と何かであるかどうか疑問に思っています。オペレーションチームのメンバーを追跡してさらに調査するよう追跡します。 – Gavin

+0

@ Gavinでは、ネットワークサービスである必要のないアプリケーションプールIDのアクセス許可をチェックする必要があります。 – VinayC

+0

@VinayC - 歓声。この場合、ネットワークサービスはアプリケーションによって使用されていますpoolNetworkサービスはファイルの場所に対する完全な権限も持っています。 – Gavin

関連する問題