#sharepoint
Вопрос:
Всем доброе утро,
У меня возникла проблема с использованием проекта рабочего процесса SharePoint (C#, VS 2008) и подключением к базе данных. Вот строка подключения к моей базе данных:
Data Source=DBSERVER;Initial Catalog=DBNAME;Integrated Security=True;
Когда я пытаюсь запустить следующий код, я получаю следующую ошибку …
SqlConnection dbEngine = new SqlConnection(Constants.DBCONNECTION_STRING);
dbEngine.Open();
«Не удалось войти в систему для пользователя» ДОМЕНИМЯ_МАШИНЫ$»»
Что мне нужно, так это пройти через учетные данные вошедшего пользователя. У меня включено олицетворение, но, похоже, оно не проходит. Любые предложения были бы очень признательны.
Заранее благодарю вас за любые советы,
Скотт Веркаски
Ответ №1:
Любой доступ к БД должен выполняться от имени учетной записи службы Windows по соображениям безопасности и объединения подключений.
Что касается Контекста безопасности рабочего процесса, см.:
SharePoint, Рабочие процессы и безопасность http://cglessner.blogspot.com/2008/09/sharepoint-workflows-and-security.html
Декларативные рабочие процессы и пользовательский контекст http://blogs.msdn.com/sharepointdesigner/archive/2008/09/28/declarative-workflows-and-user-context.aspx
Безопасность и разработка приложений в SharePoint: Рабочий процесс первых шагов http://www.microsoft.com/technet/community/columns/secmvp/sv0408.mspx#EACAC
Ответ №2:
Находятся ли веб-интерфейс и SQL-сервер в одном и том же окне ?
Если нет, вам придется настроить Kerberos, чтобы разрешить распространение учетных данных.
Ответ №3:
Вы не можете этого сделать — рабочий процесс не выполняется в контексте пользователя. Рабочие процессы выполняются асинхронно. Только (HTTP) веб-страницы-Запросы выполняются в контексте пользователя (если вы включаете олицетворение). Вы не можете передать олицетворение в рабочий процесс. Для восстановления олицетворения в рабочем процессе (чего вам не следует делать) потребуется имя пользователя И пароль ИЛИ переход по протоколу (тогда процесс должен будет выполняться в системе).
Кроме того, у вашего приложения возникает серьезная проблема с дизайном, если вы пытаетесь получить доступ к базе данных из контекста олицетворенного пользователя. Это испортит объединение соединений и серьезно повредит производительности. Это, как правило, недопустимо.
Это не проблема kerberos. Процесс пытается получить доступ к базе данных от имени учетной записи компьютера, которая сообщает, что процесс выполняется либо как сетевая служба, либо как система (win 2008 и более поздние версии).