SECURITY

[もどる]


ASP.NET から Windows 認証で接続するには

Visual Studio で動作確認した ASP.NET ウェブアプリが IIS に発行した後、動作しなくなる現象があります。SQL Server 認証だといいんですが、Windows 認証では設定が必要です。

それは、web.config の設定の違いかユーザ権限の違いのためです。Visual Studio ではログインユーザの権限でウェブアプリも動作しますが、IIS では別の特殊なユーザ権限で動作します。

SQL Server 認証ならどちらのユーザで動いていても関係ないのですが、Windows 認証の場合は、ユーザが異なるのでログインできなくなります。

このユーザというのが最初 IUSR かと思っていたら、DefaultAppPool という偽装ユーザでした。ということで、Management Studio で、このユーザをデータベースのユーザに追加したらウェブアプリが動くようになりました。

このユーザは「検索」しても出てこないので直接入力します。

ただし、ただ登録するだけでなくスキーマの所有権も設定することを忘れないようにします。



残念ながらこれだと、IIS と SQL Server が異なるサーバで動作している場合、うまく動作しません。その場合は、SQL Server が動作している DB サーバの有効なアカウントを IIS に設定してやらないと認証されません。(以下の設定を行うと上記の設定は使用されないので不要です)

まず、コンピュータの管理で「インターネッインフォメーションサービス」を選んで、ツリーの上の方にある「アプリケーションプール」をクリックします。


DefaultAppPool を選択してアプリケーションプールのプロパティ(右側のペイン)で「詳細設定」を実行します。プロセスモデルのIDをクリックするとボタン(…)が表示されるので、それをクリックします。


ここにDB サーバの有効なアカウント情報を入力すると、IIS から DB サーバ上の SQL Server に Windows 認証で接続できるようになります。


この記事は下のリンク先と同じである。

SQL Server: bcp ユーティリティの使用例