2009-07-31 8 views
3

Windows認証を使用するasp.netイントラネットアプリケーションがあります。私はVS 2005で数年前にアプリケーションを作成しました.Windows認証ビットは完全に動作していました。HttpContext.Current.UserにWindows認証が設定されていません

<authentication mode="Windows" /> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

私は資格情報が必要であることを確認するために、Firefoxでこれをテストし、実際に私は、ときに最初に私のネットワーク資格情報の入力を求めています: - (>のsystem.web要素の構成内の)私のweb.configファイルには、以下がありますサイトにアクセスし、無効であれば拒否されます。

ただし、HttpContext.Current.User.Identityにアクセスしようとすると、オブジェクトにはNameとAuthenticationTypeの空の文字列があり、Authenticated = falseになります。私は、interwebsの周りを見回した後にWindowsTokenRoleProviderを有効にする必要があるかもしれないと思っていましたが、これは何も変わりませんでした。

<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false"> 
     <providers> 
      <clear/> 
      <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider"/> 
     </providers> 
    </roleManager> 

二つの私は、私はそれが仕事を見てきました前回やった事は変換ウィザードをVS 2008にプロジェクトをアップグレードしている、と私の同僚はかもしれないが、私はまた、数ヶ月のためにそれを置きますここやそこでそれに取り組んだ。 User.Identityに影響を与える唯一のものは、上記のweb.configの値ですが、明らかに何か間違っています。他の誰かが似たような問題に遭遇するか、私が間違っている何かを見ますか?ありがとう。

+0

IEでテストしましたか? –

+0

うん... IEでもテストされています。私がFirefoxに言及した唯一の理由は、IEが自動的にあなたの認証情報を渡すのに対し、FFはプロンプトを使ってログインを強制するからです。これは私が匿名アクセスをブロックしていることを知っているが、私はまだUser.Identityに空白の情報を得ている。 – Rich

+0

「HttpContext.Current.User.Identityにアクセスしようとすると、ページライフサイクルのどの時点であなたはこれをやっている? – Bullines

答えて

2

私は、匿名アクセスがサイト/仮想のIISでオフになっていることを確認する必要があると確信しています。

+0

私は匿名アクセスをオフにし(チェックを外して)、IISで統合されたWindows認証を選択しました。 – Rich

0

いくつかのアイデア:

「ASP.NET構成設定」ダイアログをプルアップします。 [認証]タブで、[認証モード]が[Windows]()に設定されていますか? 'Application'タブで、 'Local impersonation'が設定されました(私はチェックをはずすべきです)。

サーバーがドメインから削除されましたか?アプリケーションプールを実行しているユーザーが変更されましたか?ドメインポリシーが変更され、サーバーが認証チェックの目的でユーザーを偽装するのを防ぎました(委任ではありません)。

サイトのasp.net拡張機能を再インストールしましたか?

HttpContext.SkipAuthorizationフラグは、プログラムで確認できます。

1

あなたが望む動作を得るために追加してみてください。偽装がオンになっていない場合、多くはまだネットワークサービス名やASPNETユーザー

の下で起こり、ここで頭に来た他のクレイジーなアイデアを持っていHanselman blog post次のとおりです。

-2

あなたはidentity impersonationを追加しようとしています:

<identity impersonate="true" /> 

to the web.config?

0

ここで、このユーザーを確認してください。要求サイクルでは、承認が行われる前にいくつかのイベントが発生します。

Vista、Windows 7、またはWindows Server 2008でテストしている場合は、ASP.NetとIISパイプラインがIIS 7の既定の構成に統合されているため、他にも違いがあります。

+0

コードが実行される前にログインする必要があるため、資格情報が渡されます。ユーザーの私の小切手はPage_Loadにあり、覚えています...これは最近までうまくいきました。これは私のVista開発マシンとServer 2003を実行する2つの異なるサーバーでテストされています。ありがとう。 – Rich

3

<httpModules>セクションが消去されていないことを確認してください。

<httpModules> 
     <!-- ... --> 
     <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" /> 
     <!-- ... --> 
     <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" /> 
     <!-- ... --> 
    </httpModules> 

ここで重要な要素であるWindowsAuthentication:あなたのマシンのweb.configファイルには、このようなスニペットを含める必要があります。それがあなたの%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.configファイルにあることを確認してください。また、自分のWebサイトと "親"サイトのサイトまたはフォルダに表示されるweb.configファイルの両方に、セクションに<clear/>タグが含まれていないことを確認してください。 WindowsAuthenticationモジュールがない場合、ブラウザがログインを強制するかどうかは関係ありません。ASP.NETは実際にはこのモジュールが含まれていないとUserプロパティを設定しません。 httpModules

順序も重要であり、特に私がWindowsAuthenticationモジュールはAnonymousIdentification 1出現する必要があると考えています。

関連する問題