2010-04-26 2 views
1

Я не совсем уверен, как сказать это ради названия, поэтому, пожалуйста, простите меня. Кроме того, я не могу понять, как решить этот вопрос, поэтому я надеюсь, что смогу добиться успеха в правильном направлении.Хранение и использование учетных данных учетной записи пользователя Microsoft в базе данных SQL Server 2008

Часть моего программного обеспечения (приложение VB.NET) требует возможности доступа/чтения/записи общей сетевой папки. У меня есть опция для того, чтобы пользователь мог указать любые учетные данные, которые могут потребоваться для доступа к указанной папке.

Я хочу сохранить эти учетные данные, данные в базе данных SQL Server, как часть конфигурации (у меня есть таблица, содержащая конфигурацию).

Я обеспокоен тем, что пароль для учетной записи пользователя будет незанятым. Тем не менее, если я зашифрую пароль, база данных VB.NET App And/Or не сможет использовать учетные данные для операций ввода-вывода файлов, если только пароль не был зашифрован перед использованием.

Я ловлю предложения о том, как лучше справиться с этой ситуацией.

ответ

0

сам SQL Server имеет средства для хранения учетных данных для Windows, см CREATE CREDENTIAL:

Удостоверение представляет собой запись, которая содержит информацию аутентификации, которая требуется для подключения к ресурсу вне SQL Server. Большинство учетных данных включают пользователя и пароль Windows.

Но хранение учетных данных пользователя в приложении, в любой форме, всегда плохая идея. Во-первых, они не синхронизируются, когда пользователь меняет пароль. Во-вторых, олицетворение пользователей для доступа к ресурсам - это , а не - правильное решение. Правильное решение состоит в том, чтобы фактически настроить членство в группе и правильно определить списки управления доступом на ресурсах.

Единственные правильные сценарии для доступа к ресурсам являются:

  • как пользователь запуска приложения, то есть. нормальный заурядное использование случае
  • как сервис, который олицетворяет подключенную пользователь, который делается путем получения маркеров удаленных тождественных от аутентификации ССПИ, как NegotiateStream.RemoteIdentity
+0

поблагодарив вас за ваши ответы, я думаю, Windows Authenication будет хорошо. Если я могу вам немного узнать об этом, конечная цель этого приложения состоит в том, чтобы иметь много пользователей с разными разрешениями (зависит от группы пользователей).Теперь я понимаю, что я должен разрешить приложению конечного пользователя получить доступ к указанному сетевому ресурсу и указать права пользователя/группы в настройках учетной записи Windows. Верный? Кроме того, где, как вы думаете, я должен хранить разрешения для конкретных приложений? Могу ли я как-то указать эти разрешения так же, как и другие разрешения Windows? – instantmusic

+0

Вы можете разрешить доступ к ресурсам для определенных пользователей/групп. Вы можете разрешить доступ к вашему приложению определенным пользователям/группе. Что вы не можете сделать, так это то, что вы не можете разрешать доступ к * ресурсам * для определенного * приложения *. Там просто нет инфраструктуры, которая позволяет вам аутентифицировать * приложения, в отличие от пользователей. Чтобы разрешить доступ к ресурсу для пользователя или группы, измените ACL-список ресурсов (список контроля доступа), либо из оболочки пользовательского интерфейса, либо с помощью инструмента, такого как cacls.exe. –

+0

Ahh Прошу прощения, я думаю, что я мог бы неправильно сформулировать это. Я хотел сказать, что приложение будет обращаться к папке напрямую, то, что она может/не может сделать в папке, будет продиктована учетной записью пользователя, которая вошла в систему и использовала программу. Следующим вопросом является пользовательские разрешения для приложений (у пользователя есть доступ для просмотра этой формы/сетки, пользователь может добавлять/редактировать/удалять записи из этой сетки и т. Д.), Но только некоторые быстрые чтения вокруг него выглядят так, как будто мне, возможно, конкретных разрешений в моей базе данных и вручную сопоставлять пользователей/группы с правами приложения. Что касается права? Я открыт для советов. – instantmusic

0

Я бы предложил использовать проверку подлинности Windows в вашем приложении. Если вы это сделаете, вы можете установить разрешения в общей папке и в базе данных и избежать сохранения учетных данных любого типа в базе данных.

0

Вам необходимо использовать собственный алгоритм шифрования или тот, который позволяет снова расшифровать пароль, если вы хотите сохранить его в зашифрованном виде. Существует много способов сделать это одним из наиболее распространенных заключается в том, чтобы зашифровать их с помощью безопасного слова, чтобы вы могли использовать одно и то же слово для дешифрования.

Ну, возможно, это не настоящее слово, а нечто вроде случайного байтового массива или чего-то подобного.

Смежные вопросы