C # - Реализация единого входа в WinForms (как это делает Outlook) - PullRequest
2 голосов
/ 10 ноября 2011

Я создал приложение сервер / клиент.Оба они написаны на C #.Он использует связь TCP / IP с пользовательской реализацией SSL.В настоящее время для входа в систему требуется пара логин / пароль для входа в систему.

Меня попросили ввести единый вход, чтобы исключить необходимость ввода имени пользователя / пароля.

Так что теперь, когда клиент запускаетсяон определяет текущий SID пользователя, вошедшего в систему, и отправляет его на сервер, который сопоставляет это подключение пользователю с помощью SID.

Это решение работает хорошо, но, как мне кажется, оно не является безопасным.

У клиента строгое имя, и оно, конечно, запутано.

Я начал думать о том, как можно взломать этот логин, и я думаю, что это очень легко с точки зрения хакера:- Выяснить SID пользователя в сети не проблема. - Удаление строгого имени и изменение соответствующего кода для использования SID с жестким кодом вместо текущего может быть легко реализовано

Так что вы думаете?Можете ли вы предложить мне лучшее решение, пожалуйста?Подскажите пожалуйста, как улучшить безопасность?

Или подскажите, пожалуйста, как Outlook обрабатывает аутентификацию пользователей?(Я думаю / надеюсь, что обмануть Outlook не так-то просто)

Спасибо!

1 Ответ

2 голосов
/ 15 ноября 2011

Для аутентификации с помощью аутентификации Windows вы можете использовать NegotiateStream.

MSDN предоставляет хороший пример, который вы можете использовать для аутентификации:

http://msdn.microsoft.com/en-us/library/system.net.security.negotiatestream(v=vs.85).aspx

...