ApplicationPoolIdentity IIS 7.5からSQL Server 2008 R2が機能しない


11

ドメイン内の別のマシン上のSQL Serverデータベースへの接続を開く小さなASP.NETテストスクリプトがあります。すべての場合に機能しているわけではありません。

セットアップ:

リモートSQL Server 2008 R2インスタンスに接続しようとしているW2K8R2の下のIIS 7.5。すべてのマシンは同じドメインにあります。

WebサイトのApplicationPoolIdentityを使用すると、次のようにSQL Serverへの接続に失敗します。

ユーザー 'NT AUTHORITY \ ANONYMOUS LOGON'のログインに失敗しました。説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーの詳細とコードのどこで発生したかについては、スタックトレースを確認してください。

例外の詳細:System.Data.SqlClient.SqlException:ユーザー 'NT AUTHORITY \ ANONYMOUS LOGON'のログインに失敗しました。

ただし、プロセスモデルIDをNETWORK SERVICEまたはドメインアカウントに切り替えると、データベース接続は成功します。

SQL Serverで\ $アクセスを許可しました。

私はWebサイトで認証を行いません。データベースへの接続を開いて機能することを確認するための単純なスクリプトです。

匿名認証を有効にし、アプリケーションプールIDを使用するように設定しています。

この作業を行うにはどうすればよいですか?ApplicationPoolIdentityがANONYMOUS LOGONを使用しようとするのはなぜですか?さらに良いことに、匿名ログオンの使用を停止するにはどうすればよいですか?


1
いつでも、AppPool IDをNETWORK SERVICEとして設定できます。
JohnThePro

回答:


4

私も同じ問題を抱えていました。あたりとしては、このページ、ApplicationPoolIdentityはマシンアカウント(DOMAIN \ COMPUTERNAME $)などアクセスネットワークリソースになっているが、それは代わりにアクセスSQLサーバーにNT AUTHORITY \ ANONYMOUS LOGONを使用していました。

この修正プログラムを使用して、ドキュメントに記載されているとおりにApplicationPoolIdentityを機能させることができました。この修正プログラムは、ネットワークリソースにアクセスするためのソリューションをNT AUTHORITY \ ANONYMOUS LOGONとして具体的に説明していませんが、コンピューターのパスワード変更に関連しています。

このstackoverflowスレッドは、この解決策を見つけるのに役立ちました:

ASP.NET IDおよびSQL IDをデバッグするためのその他の便利なヒント

SQL統合認証はスレッドIDに関連しているため、ユーザーID、スレッドID(偽装に応じて変化します)、およびSQLサーバーログインを表示できると便利です。このASPXスニペットは、3つすべてを表示します。

<%@ Import Namespace="System.Security.Principal" %>

<div>ASP.NET Request User identity: <%= User.Identity.Name %></div>
<div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div>
<asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>"
           SelectCommand="select SYSTEM_USER" />
<asp:DetailsView DataSourceID="CurrentUserData" runat="server" />

2

私はまったく同じ問題を抱えていました。私は数時間髪を抜いて、ついにマシンを再起動しました。問題はなくなりました!iisreset DIDを介してIISを再起動しても問題は解決しないことに注意してください。サーバーを再起動したときにのみ消えました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.