У меня есть сервер, на котором размещается Sharepoint 2010. У меня есть другой сервер, на котором размещен SQL Server 2008 R2. SharePoint основан на Kerberos / утверждениях.
На моем SharePoint я установил пользовательскую веб-часть, которая подключается к компьютеру с SQL Server с использованием стандартной строки подключения (Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
).
Проблема в том, что когда веб-часть пытается подключиться к серверу sql, я получаю следующее сообщение:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
Что мы сделали:
- Проверьте все spn / Delegation / Trusts вещи - все кажется в порядке.
- Пытался подключиться напрямую с компьютера sharepoint через файл UDL к серверу sql, и это работает.
- Попробовал веб-часть как отдельную страницу ASPX на одном сервере, чтобы доказать, что код должен работать, и он работает.
- Wireshark -> Мы можем увидеть KDC_ERR_S_PRINCIPAL_UNKNOWN, когда ANONYMUS LOGON пытается подключиться к серверу sql (незаметно).
- Панель инструментов разработчика SharePoint показывает нам текущее имя пользователя, которое не является ANONYMUS.
- Трассировки в веб-части показывают две вещи: HTTPCONTEXT установлен для моего текущего пользователя, как и Thread.Current.
- Используя SQL Profiler, мы видим, что запрос от ANONYMUS
- Мы попытались получить доступ к веб-службе на другом сервере из другой пользовательской веб-части, но по той же причине это не удалось (ANONYMUS).
Чего нам не хватает? Проблема действительно заключается в том, что SharePoint не может отправить учетные данные текущего пользователя на другой сервер (sql или нет).