- クライアントはWindows XP SP3(WPF + WCF)
- WebサーバーはWindows Server 2008(x64)/IIS 7.0
- DBサーバーはWindows Server 2003(x86)/SQL Server 2005 SP3
- 全体をActive Directoryで管理
こんな構成でクライアントからwsHttpBindingを使い、CredentialsはWindowsとします。これで偽装も行っているので、WebサーバーのWorkerProcessがNetworkServiceでもローカルファイルに対してアクセスが行えています。
で、さらにWCFサービスからSQL ServerへWindows認証を行うとNT AUTHORITY\ANONYMOUSEでアクセスしようとして、エラーになるというのが現在の状態。ダブルホップが起きているのかなぁ…一応Active Directoryでの委任は設定しているのですが、NTLMでアクセスしようとしているのかもしれません。とりあえず、NT AUTHORITY\ANONYMOUSEにアクセス許可を設定してしまいましたorz。よい子はマネしちゃダメだぞ!
海外でもこの構成ではまっている人は多くいるようで、「ActiveDirectoryに委任設定しろよ!」「俺管理者じゃないからそんなことできねーよ(涙)」とコメントしている人も多くみられました。といってもダブルホップだと、管理者にやってもらわないとどうしようもないですよねぇ。探してみたところいろいろリソース発見。
You may not be able to connect to an instance of SQL Server by using an anonymous login
patterns & practices: WCF Security Guidance - Home
Testing connection to SQL Server from a service running under Local System Account