2016-12-12 9 views
0

これはSQL Server 2008 R2、.NET 4.0です。ADO.NET - WindowsでSQL Serverに接続するアプリケーションで提供されるログインとパスワードでログインします。

私のSQL Serverには、「Windows認証」で作成されたユーザーがいます。ユーザーはActive Directoryドメインに存在します。

このユーザーとして.NETアプリケーションをSQL Serverに接続したいとします。アプリケーションの中で、私はユーザーのドメイン、ログイン、パスワードを知っていて、アプリケーションはADサーバーへのネットワークアクセスを持っています。

どうすればこの問題を解決できますか?

私は、ASP.NETにはADプロバイダとなりすましがあることを知っています。しかし、私が探しているのは本当に汎用的なソリューションです。普通のコンソールアプリケーションで動作するはずです。私はコンソールアプリケーション、Windowsフォーム、asp.net、または共通のビジネスクラスライブラリで使用できる何か。

ありがとうございました!

+0

もっと分かりやすくするにはSQL接続文字列に "Integrated Security = true"を使用する必要があります。しかし、私はSQL Serverに接続しようとする前に特定のADユーザーを偽装する必要があります。実際に自分のアプリケーションを実行しているユーザーはSQL ADユーザーではありません。しかし、アプリケーションの中で私はADユーザーの資格情報を知っているので、私はSQLに接続しようとする前にそれを偽装することができるはずです。 –

答えて

0

私はこのクラスを使用してそれをやった:

https://platinumdogs.me/2008/10/30/net-c-impersonation-with-network-credentials/

コンピュータがドメインに属していない場合は、LOGON32_LOGON_NEW_CREDENTIALS = 9を使用して偽装しなければなりません。

偽装されたら、SQL接続文字列で "Integrated Security = true"を使用してSQLに接続します。

SqlConnection conn; 
using (new Impersonator("myUserName", "myDomain", "myPassword", LogonType.LOGON32_LOGON_NEW_CREDENTIALS, LogonProvider.LOGON32_PROVIDER_DEFAULT)) 
{ 
    conn = new SqlConnection("Data Source=databaseIp;Initial Catalog=databaseName;Integrated Security=true;"); 
    conn.Open(); 
} 
//(...) use the connection at your will. 
//Even after the impersonation context ended, the connection remains usable. 

警告:接続プーリングに注意してください。プールは、偽装されたネットワーク資格情報ではなく、アプリケーションを実行している実際のユーザーに関連付けられています。したがって、同じ接続文字列を使用した後続のアクセスでは、たとえあなたが2人目のユーザーになりすましたとしても、プールは以前に偽装されたユーザーによって行われた接続を返すことがあります。あなたが何をしているのかわからない場合は、これを使用するときに接続プーリングを無効にしてください。

0

これについて説明している多数の記事とチュートリアルがあります。ちょっとしたリサーチで、あなたが必要とするものが、簡単に見つけられ、多くの場所でよく説明されます。ここで開始するには良い場所は次のとおりです。

Beginners guide to accessing SQL Server through C#

偽装については、ユーザーIDの代わりにグローバルグループを使用したいと思うでしょう。その後、すべてのエンドユーザーがそのグローバルグループのメンバーになるようにします。

+0

この初心者ガイドは、アプリケーションを実行しているユーザーが既にSQL Serverアカウントを持っていると想定しているため、私には役に立ちません。グローバルグループを作成することはできません。私は10年以上も生産しているインフラと一緒に暮らす必要があります。 –

+0

をご覧ください:http://stackoverflow.com/questions/41102480/connectionstring-with-spectific-ad-account-credential私の経験から、SQL接続を開いている間だけ偽装を使用する必要があります。 – oldovets

関連する問題