Модель аутентификации и безопасности в клиент-серверных приложениях

StackOverflow https://stackoverflow.com/questions/1014042

Вопрос

Я разрабатываю пользовательское клиент-серверное приложение, которое требует, чтобы клиент входил в систему под своим именем пользователя и паролем.Учетные записи пользователей никоим образом не связаны с учетными записями Windows / AD.После входа в систему клиентское приложение запросит другие службы у серверной системы.

Мой вопрос в том, каков наилучший способ реализовать это?Какая архитектура лучше всего подошла бы здесь?Я предполагаю, что необходимо внедрить какую-то систему аутентификации по билетам / токенам???

Спасибо

Это было полезно?

Решение

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

Другие советы

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

Table:  Users
Fields: UserID   PK
        Login    Text
        Password Text
        ...

Table:  Roles
Fields: RoleID   PK
        Role     Text
        ...

Table:  UserRoles
Fields: UserID    FK
        RoleID    FK
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top