2

バックグラウンド:

ASP.NetMVCWebサイト。IIS7、イントラネットでホストされます。

データベース:SQLServer。NHibernate経由でアクセス。
接続文字列では、アクセスはに設定されていIntegrated Security: SSPIます。
(DBへのアクセス許可はActive-Directoryベースです。)

つまり、これは典型的なダブルホップの状況で
あり、クライアントの資格情報をIISに渡し、IISからSQLServerに渡す必要があります。

問題:

問題は、エラーのある死の黄色い画面です。
Login failed for user 'MyDomain\UserThatRunsAppPool'.

問題を解決するために私がやろうとしたこと:

  • Windows認証
    ASP.NET偽装のみを有効にするように認証を構成する
  • Windows認証ProviderNegotiate:Kerberos
    (カーネルモード認証を無効にした後)に設定する
  • ActiveDirectoryでUserThatRunsAppPoolの委任が次のように設定されていることを確認します
    Trust the user for delegation to any service (Kerberos only)
  • NHibernateSessionFactoryの作成をからApplication_BeginRequest()
    に移動Session_Start()

問題を解決する試みでどれほど成功したか:

全くない。


編集:
IISサーバーの委任を' Trust the user for delegation to any service (Kerberos only)'(Active Directory内)に設定しようとしました。

4

1 に答える 1

3
In short, this is a typical double-hop situation,
where I need to pass client's credentials to IIS, and from IIS to SQL Server.

「委任」の問題にぶつかりました。正気を保ちたい場合は、SSPI の代わりに SQL ユーザー名とパスワードを使用するように接続文字列を変更してください。

デバッグやドメイン管理者との口論で 2 週間イライラしたと感じたら、「Kerberos 委任 Web サイトを楽しむ」をお読みください。

于 2012-06-24T09:51:56.760 に答える