#windows #client-server #windows-authentication
#Windows #клиент-сервер #windows-проверка подлинности #windows-аутентификация
Вопрос:
У меня есть серверное приложение, связывающееся с клиентами с помощью Boost ::Asio. Я могу предположить, что и сервер, и клиент работают в одном центре обработки данных, поэтому шифрование соединения строго не требуется (я думаю, не уверен). В настоящее время и сервер, и клиент работают на платформах Windows.
Теперь я хочу добавить ограничения для клиентских приложений, но я хочу повторно использовать аутентификацию Windows. В клиентском приложении я могу легко получить имя пользователя и информацию о группе, но мне нужно передать это на сервер, чтобы сервер мог посмотреть в своих таблицах конфигурации, какому пользователю разрешено видеть какую информацию. В
Как я могу спроектировать это без необходимости реализовывать собственную аутентификацию, не заменяя Boost::Asio собственной технологией Windows (клиенты Android и iOS будут добавлены позже и будут иметь механизм аутентификации для Android / iOS, например DeviceID) и по-прежнему предотвращать подключение мошеннических клиентов как неправильного / не прошедшего проверку подлинности пользователя?
- Должен ли я использовать зашифрованные соединения (и могу ли я сделать это с помощью Boost ::Asio)?
- Должен ли я использовать другой механизм аутентификации (и есть ли для этого переносимая библиотека)?
Комментарии:
1. Я думаю, вам придется использовать функции управления контекстом SSPI, например, см. Установление безопасного соединения с аутентификацией в MSDN. Однако это зависит от того, находятся ли клиент и сервер в одном домене (или доменах с подходящими отношениями доверия). В противном случае единственным другим вариантом является традиционная модель, запрашивающая у пользователя пароль.
2. (В любом случае, наилучшей практикой является шифрование даже для трафика внутри центра обработки данных. Похоже, Boost ::Asio включает поддержку SSL, так что это не должно быть проблемой.)