2012-02-29 9 views
2

私はそれには、以下の設定文字列でうまく動作Iは、Microsoft SQL Server 2008の を使用するように設定する必要があり、古い従来のASPアプリケーション(ないasp.net)を持っている:クラシックASP統合セキュリティ

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;UID=sa;PWD=somepass 

しかし、私は統合されたセキュリティを使用する必要があります。しかし、私が試したどんなタイプの宣言にも誤りがあります。それとバリエーションの多くは動作しないような何か:

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;Integrated Security=SSPI; 

だから、私の質問は:接続文字列は、クラシックASP統合されたセキュリティのためのようになりますか。あるいは、追加のウェブサーバーの設定が必要なのでしょうか?

+0

また、統合セキュリティを使用してWebサイトのユーザーを認証しているのですか、または匿名ユーザーアカウントで実行されているサイトですか? – AnthonyWJones

+0

私は質問が1つあります。ローカルIISでテストしています。データベースへのアクセスを許可しないASP.NETアカウントを使用しているとします。自分のアカウント(Windowsにログインするために使用する)を使用するようにIISまたは仮想ディレクトリを構成する方法を教えてください。ローカルIISにはアプリケーションプールがなく、データベースアクセスに使用されるユーザーの設定方法はわかりません。 – Roman

+0

私のIISバージョンは5.1(Win XP Pro) – Roman

答えて

3

これは、匿名認証を使用していると仮定して、aspアプリケーションプールの認証に基づいてSQLにヒットします。

ISS5でwindows authを使用するように設定すると、サイトのプロパティに移動し、[ディレクトリセキュリティ]タブを選択して[編集]ボタンをクリックすると、 「匿名アクセスと認証の制御」セクションを参照してください。匿名認証を無効にして、「統合Windowsセキュリティ」オプションを選択します。

(注:ウェブサーバは、資格情報を認証することができるようにする必要がありますので、あなたがあなたのドメイン構成に応じて、NTLMとKerberosの問題に遭遇するかもしれ - 慎重に踏み!)

これはとしてASPファイルを実行する必要がありますこの場合、接続文字列は信頼できる接続を使用できるようになります。

利用可能なプロバイダーによっては、ここでいくつかの選択肢があります。あなたが使用できるSQLネイティブクライアント9.0 OLE DBプロバイダで例えば

、:

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 

ネイティブクライアント10が若干異なります。

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 

私は(IVEはトラブルがあったSQLOLEDBプロバイダを好みます

Provider=SQLOLEDB;Data Source=Your_Server_Name;Initial Catalog=myDataBase;Integrated Security=SSPI; 

注:SQL ServerドライバとVARCHAR(MAX)過去)との突然認証を変更すると他のものが壊れる可能性があります。SQLサーバーにSQL資格情報を追加し、代わりに接続文字列に使用することをお勧めします。

0

あなたの質問へのコメントで私のお問い合わせに返信していないので、より広い回答をしなければなりません。 (HeavenCoreは実際にあなたに正しい接続文字列を与えてくれましたが、SQLOLEDBのものです)。

あなたがacriptを実行しているスレッドは、IISの匿名ユーザーに属していることをセキュリティトークンの匿名アクセスの下でクラシックASPのウェブサイトを実行すると、匿名アクセス

を使用。 IIS5.1の既定では、このユーザーはローカルマシンユーザーです。結果として、SQL Serverが同じボックスで実行されている場合を除き、このユーザーを使用してSQL Serverへのアクセスを許可することはできません。

匿名アカウントとして機能するには、ドメイン内に新しいユーザーを作成する必要があります。次に、アプリケーションの匿名ユーザーをこの新しいアカウントに変更します。 SQL Serverでは、このアカウントに適切なデータベースアクセスを許可できます。

正しく覚えていれば、サイトのプロパティを開いて匿名ユーザーアカウントを設定できます。 [ディレクトリセキュリティ]タブで、[認証とアクセス制御]の[編集]をクリックします。表示される認証方法ダイアログでは、匿名アカウントをドメインのメンバに変更できます。

匿名アクセスせずに、従来のASPを実行しているが、代わりにウィンドウ統合セキュリティを使用して接続を認証している場合は、各スクリプトは、認証されたユーザのセキュリティトークンを使用して実行されますアクセス

を統合ウィンドウを使用します。したがって、SSPIがSQL接続で使用されると、要求が到着した接続に関連付けられたユーザーが使用されます。

これらのユーザーにSQL DBにアクセスするには、適切なADグループを作成し、これらのグループにDBへのアクセス権を与える必要があります。次に、ユーザーをこれらのグループに割り当てます。

このアプローチの欠点は、あまり関係のない残りの構成を考慮して接続キャッシュの制限を受けることです。

+0

ありがとうございます。しかし、私はまだ統合セキュリティでそれを実行することはできません。私たちはローカルネットワークにデータベースを持っています。私のドメインアカウントMYDOMAIN \ MyAccountには、DBへのアクセス権があります。 Visual StudioからInegrated Securityを使用してasp.netアプリケーションを実行するとうまくいきます。私はこのアカウントを使用するためにIISを強制する必要があると思います。私はHeavenCoreが言ったように(匿名認証を無効にし、 "統合Windowsセキュリティ"オプションにチェックをつけて)、同じ結果を得ました。 DB接続を確立できません。 – Roman

+1

@Roman私の答えをより慎重に読んで、あなたが理解していないことを明確にしてください。要するに、匿名ユーザーを** MYDOMAIN \ Myaccount'アカウントに変更する必要があります。 – AnthonyWJones