У нас есть веб-приложение на C #, где пользователи будут подключаться с помощью цифрового сертификата, хранящегося в их браузерах.
Из примеров, которые мы видели, проверка их идентичности будет легкой после включения SSL, поскольку мы можем получить доступ к полям в сертификате, используя Request.ClientCertificate, чтобы проверить имя пользователя.
Однако нас также попросили подписать данные, отправленные пользователем (несколько простых полей и двоичный файл), чтобы мы могли без сомнения доказать, какой пользователь внес каждую запись в нашу базу данных.
Нашей первой мыслью было создание небольшой текстовой подписи, включающей поля (и, если возможно, md5 файла), и шифрование ее с помощью закрытого ключа сертификата, но ...
Насколько я знаю, мы не можем получить доступ к закрытому ключу сертификата для подписи данных, и я не знаю, есть ли способ подписать поля в браузере, или у нас нет другого выбора, кроме как использоватьJava-апплет.И если это последнее, как мы это сделаем (есть ли какой-нибудь апплет с открытым исходным кодом, который мы можем использовать? Было бы лучше, если бы мы его создали сами?)
Конечно, было бы лучше, если бы былСпособ «подписать» поля, полученные на сервере, с использованием данных, к которым мы можем получить доступ из сертификата пользователя.Но если нет, то любая информация о наилучшем способе решения проблемы будет принята.