Как реализовать единый вход в систему для приложения WinForms и SQL Server - PullRequest
4 голосов
/ 10 сентября 2009

У нас есть приложение WinForms, которое использует SQL-сервер для хранения своих данных. Для аутентификации пользователей приложения мы используем SQL Server для аутентификации. Пользователь должен иметь имя пользователя / пароль, который существует на сервере базы данных, чтобы иметь возможность войти в систему.

Пока все хорошо.

Теперь один из наших клиентов хочет, чтобы мы внедрили единый вход. Они хотят иметь возможность запускать наше приложение без ввода имени пользователя / пароля, они хотят использовать Windows для аутентификации пользователя.

Есть ли у вас какие-либо советы о том, как мы могли бы это реализовать?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2009

См. Эту статью Единый вход в приложение WinForms в 2 строки кода .

Многие разработчики не знают о двух объектах с богатой информацией, доступных им для проверки на основе ролей, и их также можно использовать для проверки подлинности доступа (по существу, единого входа в систему) к их приложению, поскольку пользователь уже вошел в систему. рабочий стол. Это объекты WindowPrincipal и WindowsIdentity. Цель этого скринкаста - показать, как использовать богатую информацию, которую предоставляют эти объекты - начиная всего с 2 строк кода.

1 голос
/ 10 сентября 2009

Я бы сказал, используя активный каталог и SSPI (он же доверенные соединения). Обычно для этого используется аутентификация kerberos.

Если у вас есть представление о пользователе в вашей базе данных, например, таблица Users, вы можете добавить другой столбец или создать отдельную таблицу для хранения имени пользователя для этого домена (например, johnsmith@somedomain.example). Чаще всего вы видите somedomain \ johnsmith, но метод @ является более новым, предпочтительным представлением.

...