2012-03-21 27 views
0

Windowsフォーム認証を使用するASP.NET(.NET 4.0)アプリケーションがあります。これはActive Directoryに対して認証され、うまく動作します。ASP.NET WebアプリケーションからASP.NET WebサービスからSQL Serverへの認証

このWebアプリケーションは、同じサーバー上でASP.NET Webサービス(.NET 4.0)を呼び出します。アプリケーションとサービスの両方がIIS 6上で動作しています。

Webサービスは、接続文字列の一部として "Integrated Security = SSPI"を使用して同じドメイン内のSQL Server 2005データベースを呼び出します。

Webサービスとデータベース接続で、Webアプリケーションのログインユーザーの資格情報を使用したいとします。

私は数十のウェブサイトから何十もの設定の組み合わせを試しましたが、何も機能していません。私は二日目になり、どこにもいない。

これも可能ですか?私の最新の試みで

、私は、Webサービスを呼び出す前に、Webアプリケーションにこのコードを追加:

svc.Credentials = System.Net.CredentialCache.DefaultCredentials; 

しかし、サービスの内部で、User.Identity.Nameは、ウェブを開始したユーザーの値を返します。サーバ。

+0

http://support.microsoft.com/kb/306158を確認し、「認証ユーザーをコードで偽装する」のコードを試してみてください。 –

+0

@NickBork:その方法では、ASP.NETに「OSの一部として実行」特権を与えたり、SYSTEM(rootのNT名)として実行する必要があります。 – Andomar

答えて

1

あなたがしようとしていることを「委任」といいます。つまり、エンドユーザーはWebサーバーで認証され、Webサーバーはこれらの資格情報を使用してSQL Serverにアクセスしようとします。しかし、SQL SeverはWebサーバーを信頼せず、ドメインコントローラのみを信頼します。したがって、要求は失敗します。

委任には別の欠点があります。各ユーザーは異なる資格情報を使用するため、SQL接続はプールされません。各資格には独自のプールがあります。これは、ユーザー数が少ない場合でも大きなリソースになるでしょう。

詳細については、this MSDN articleを参照してください。

TL; DR:委任をあきらめてSQL認証に移動します。

+0

私はSQL認証に移動するかもしれません。ただし、Webサービスは、接続するSQLユーザーを判断するためにユーザーの資格情報を取得する必要があります。 WebサービスはWebアプリケーションと同じサーバー上で実行されるため、委任は問題ではありません。 – skataben

関連する問題