3

2 つの SQL Server からデータにアクセスする必要がある asp.net アプリケーションがあります。SQL Server の 1 つは IIS と同じマシン (SQLSERVER1 と呼びます) に存在し、もう 1 つの SQL サーバーは別のマシン (SQLSERVER2) に存在します。

接続文字列は、両方の SQL サーバーに対して信頼されています。web.config ファイルで偽装が true に設定されています。IIS と web.config の両方で Windows 認証を使用しています。

SQLSERVER2 からデータにアクセスしようとすると、login failed for user(null) エラーが発生します。Windows からログインしたユーザーは、SQLSERVER2 に SQL サーバー アカウントとして存在します。

考えられる理由は何ですか?

注: これは初心者の質問です。

注: 使用される IIS は 6.0 (Windows 2003) です。IIS 5.0 分離モードに設定されていません。

EDIT:偽装されるユーザーはドメインユーザーです

添加:

また、IIS が実行されているサーバーのクライアントとしてアクセスすると、このエラー メッセージが表示されることも述べたいと思います。つまり、私はマシン A で作業しており、IIS と SQLSERVER1 はマシン B にあり、SQLSERVER2 はマシン C にあるとします。

マシン B で作業しているときは、このエラー メッセージは表示されません。

4

5 に答える 5

7

これは完全に委任の問題です。ある人が指摘したように、Kereberos認証が使用されていることを確認する必要があります。古いスタイルのNTLMでは対応できません。Kerberos と NTLMの詳細については、こちらをご覧ください。

簡単に言えば、ウェブサーバーとデータベースがあり、データベース要求を行うときにウェブサーバーがユーザーになりすますようにしたい場合 (ユーザーごとまたはユーザーグループごとにデータベースのアクセス許可を直接設定できるようにするため)、ダブルホップを再実行します。資格情報は、最初にユーザーのコンピューターから Web サーバーに送信され、再びデータベースに送信される必要があります。ご想像のとおり、データベースは Web サーバーを信頼して「悪を行わない」ようにする必要があります。そうしないと、これが非常に危険なセキュリティ ホールになる可能性があります。そのため、Windows Server の世界で「委任」と呼ばれるものをセットアップする必要があります...

Microsoft には、これらすべてに関する優れた記事がありますさらに、このような記事に目を通して、すべての設定方法を理解することができます。私たちはこれに頻繁に遭遇しており、特に開発者としてサーバー (特に実稼働サーバー) を直接制御していない可能性が高く、多くの時間を費やす必要があるため、最初は苦痛になる可能性があります。ホールの下のサーバーの人。

于 2008-10-10T13:06:20.767 に答える
3

非 Kerberos ベースの偽装 (NTLM) はローカル マシン (Web サーバー) でのみ有効であるため、この問題が発生している可能性があります。これらの資格情報を使用して別のマシンにアクセスできるようにする場合は、Kerberos を使用していることを確認する必要があります。

これを試してください: http://support.microsoft.com/kb/810572

于 2008-10-10T12:13:37.300 に答える
0

Server1 から SQL Server 管理者を使用して server2 のデータベースにアクセスしようとし、接続に成功しましたか?

そうでない場合、これは、デフォルトで SQL Server がデフォルトで tcp をオフにしてインストールすることが原因である可能性があります。

server1 が接続できるようにするには、server2 でこれがオンになっていることを確認する必要があります。server1 は共有メモリ接続を使用できるため、接続に問題はありません。

于 2008-10-10T13:16:51.557 に答える
0

SQLSERVER1 のマシン アカウントが委任に対して信頼されていることを確認する必要があります。そうしないと、SQLSERVER2 は SQLSERVER1 で実行されている偽装を信頼しません。これは、そもそも偽装を設定するために Kerberos が使用されていることを確認するためのものです。これは、サーバーとユーザーがすべて同じドメインのメンバーであることも前提としています。

ところで、あなたはこの方法で物事をやりたいと確信しています.ユーザーに固有のものになるため、より多くの接続を作成することになりますか?

于 2008-10-10T12:54:35.660 に答える
0

Web サーバーへの認証は、SQL サーバーに渡されません。Web サーバーは、アプリケーション プールが実行されているアカウントを使用して SQL Server に対して認証を行っています。

于 2008-10-10T12:35:01.940 に答える