Это наша установка - у наших клиентов будет сервер базы данных с нашей базой данных и несколько клиентов, использующих наш интерфейс. У нас есть несколько служб WCF, позволяющих клиентам запрашивать информацию из базы данных, и каждый сеанс WCF проходит проверку подлинности с использованием имени пользователя / пароля, хранящихся (зашифрованных) в базе данных. Все это прекрасно работает и используется уже пару лет.
Мы добавили возможность входа в систему с помощью USB-сканера отпечатков пальцев, подключенного к клиентским ПК. Для этого мы сохраняем шаблон отпечатков пальцев каждого пользователя в базе данных, а затем загружаем их все на устройство. Затем устройство может сказать нам, какой пользователь подарил свой палец.
Каков наилучший способ безопасной проверки подлинности нашего клиента по отпечаткам пальцев через службу WCF без использования пароля пользователя и без открытия системы для атаки неавторизованных пользователей?
Моя первая мысль - определить секретный ключ, который знают и клиент, и сервер, зашифровать его на клиенте с помощью отметки времени и зарегистрированного идентификатора пользователя и отправить его на сервер, который затем может подтвердить, что запрос поступил от нашего клиента. .
Это хорошая идея? Может ли злоумышленник просто передать то же сообщение, чтобы начать несанкционированный сеанс?
Я не эксперт по безопасности, поэтому я бы предпочел существующее решение вместо того, чтобы по собственному желанию переходить на другое.
Мы используем C # и ориентируемся только на Windows.