3

ASP.NET> Kerberos> Sql Serverを有効にする簡単で簡単な方法を教えてください。

clientMachine > webServer > databaseServer があります。クライアントは、サイトがプロンプトではなく Windows ログインをプルする必要があると主張しているため、Kerberos と統合認証が必要です。また、ダブルホップを誘発して、ユーザーを db サーバーに偽装する必要があります。

私たちのドメインは Windows 2003 ドメインです。私がオンラインで知る限り、これは Kerberos が有効になっていることを意味します。また、ドメインに参加しているコンピューターでログインすると、kerbtray は大量のチケットを持っていることを示しているので、どうやら機能しているようです。

AD の Web およびデータベース サーバー コンピューター アカウントは、どちらも「委任に対して信頼されています」。
システムにアクセスする必要がある AD ユーザー アカウントは、どちらも「委任に対して信頼されています」。
すべてが機能するようになったら、さらにユーザーを追加します。今のところ 2 人です。

Sql Server インスタンスは、データベース サーバーの LocalSystem の下で実行されています。これは、オンラインでわかる限り、これらの SPN をいじる必要がないことを意味します。

それでも、どちらかのユーザーでログインしようとすると、

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

ダブルホップの失敗を示します。これは、db サーバーのアプリケーション ログに、同じことを言っている "MSSQL" からの多数のエントリがあるという事実によって促進されます。

これがどれだけ大変なことか、本当に信じられません... つまり、IIS、SQL、および Windows はすべて Microsoft です。

要約すると、私は

  • ケルベロス ドメイン、
  • db と web サーバーの両方が委任に対して信頼されている
  • 委任に対して信頼されているユーザー
  • AD グループのユーザー
  • SQLのログインとしてのADグループ(およびdbのユーザー)
  • 匿名がオフ、統合がオン、基本およびダイジェストがオフの IIS
  • Enable Integrated をオンにした IE

4

3 に答える 3

7

Kerberos 委任のトラブルシューティング をダウンロードします。その命の恩人です。
17 ページに、Active Directory チェックリストがあります。チェックリストの手順に従ってください。
30 ページに、Client Application Checklistがあります。チェックリストを段階的に確認します。
35 ページは、中間層のチェックリストです。順を追って確認します。
48 ページはバックエンド チェックリストです。順を追って確認します。

それでも問題が解決しない場合は、ドキュメントにトラブルシューティング ツール (kerbtray、klist、ldifde など) の詳細なリスト、システム イベント ログでの認証エラーのログ記録と監査を有効にする方法の詳細な説明、すべてのエラー コードの詳細な説明が含まれています。認証監査などからのイベント ログ エントリなど。

が間違っているのかがわかれば、修正するのははるかに簡単になります。

于 2009-08-06T05:35:27.630 に答える
5

最終的に DID の答えは SPN にあります。

このシステムはテスト サイト (test.ourcompany.com) でセットアップされたため、その参照用に新しい SPN を追加する必要がありました。したがって、以下に加えて:

HTTP/server 
HTTP/server.ourdomain.com

また、次のものを追加する必要がありました。

HTTP/test.ourcompany.com

おいおい、なんという戦いだ!少なくともそれは終わった!:)
助けてくれてありがとう!

于 2009-08-06T21:19:55.977 に答える
0

あなたが説明していることは問題なく動作するはずです。

接続文字列は次のようになります。

<add name="IntegratedAuthConnectionString" connectionString=
 "Data Source=DATABASEINSTANCE;Integrated Security=True"
 providerName="System.Data.SqlClient"/>

web.config で Windows 認証も指定する必要があります

<authentication mode="Windows"/>

Request.ServerVariables コレクションからすべてをダンプするテスト ページを作成し、認証されたユーザー名とドメインが表示されていることを確認します。以下のコードの行に沿った何か

foreach (string s in Request.ServerVariables)
{
    Response.Write(s + ": " + Request.ServerVariables[s] + "<br />");
}
于 2009-08-05T23:26:22.237 に答える