Нам необходимо создать приложение EXE, которое будет работать на сервере клиента, который обращается к нашей многопользовательской базе данных SQL.
У нас есть Column SubscriberId для каждой таблицы, которую мы используем в нашем веб-приложении, чтобы ограничить пользователей только записями, принадлежащими их SubscriberId, что отлично работает (на наших серверах).
У нас есть служба Exchange to SQL, которая работает на нашем сервере и синхронизирует контакты и встречи Exchange с нашими таблицами SQL. Проблема в том, что нам нужно, чтобы клиенты предоставили нам роль Exchange ApplicationImpersonation, чтобы мы могли получать доступ к данным на их сервере, что означает, что у нас есть доступ ко всему хранилищу их базы данных Exchange.
Большинство клиентов были готовы предоставить нам такой уровень доступа, но некоторые не хотят, чтобы мы имели такой уровень доступа - и это понятно.
Наше приложение синхронизации - это консольное приложение C # .NET, и мы хотим адаптировать его, чтобы конечные пользователи могли устанавливать приложение на свой сервер и удаленно синхронизировать его с нашим сервером.
ВОПРОС: Возможно ли создать пользователя на SQL Server 2008R2, который имеет доступ только к строкам для этого пользователя, отфильтрованного WHERE SubscriberId = 201 (например).
Мы разрешили порт 1433 доступ к их серверу, и пользователь / пароль будут использоваться в строке подключения в App.config.
Если это так, мы можем создать панель администратора в приложении Windows exe, где они устанавливают этого пользователя / пароль SQL и своего суперпользователя Exchange. Затем они могут удаленно синхронизировать - но видеть только свои собственные записи в нашей базе данных SQL.
В противном случае, похоже, нам придется переработать приложение, чтобы использовать API и альтернативную схему безопасности. Очевидно, это было бы намного больше работы :-(
Спасибо Чарльз