SharePoint 2007 ボックスで ASP.NET Web アプリケーションをホストしています。これは、Sharepoint に対して Web サービス呼び出しを行い、ドキュメントの場所 (具体的には GetListItems メソッド) を取得します。
サービスは、適切なアクセス許可を持つ有効な SharePoint アカウントの渡された資格情報で使用されます。
ListServiceWrapper listService = new ListServiceWrapper();
/*Pass credentials to service call object*/
listService.Credentials = new NetworkCredential(spUserName, spPassword, spDomain);
/*Set the Url property of the service for the path to a subsite.*/
listService.Url = ConfigurationManager.AppSettings.Get("rootSite") + "/_vti_bin/lists.asmx";
Web アプリが開発ボックスでローカルに実行されている場合 (私は同じドメインの SharePoint ユーザーです)、サービス呼び出しはうまく機能します。Sharepoint ボックスに展開されると、アプリケーションは次を返します。
リクエストは HTTP ステータス 401: Unauthorized で失敗しました。
Sharepoint ボックスの Web アプリのアプリケーション プール ユーザーを許可された SharePoint ユーザーに変更しようとしましたが、まだ成功していません。Sharepoint 認証を NTLM ではなく Kerberos に変更すれば、問題は解決すると思います。残念ながら、それはここではオプションではありません。これは、NLTM ダブルホップの問題と関係があるのでしょうか?