Цифровая подпись: как реализовать работу IT отдела?
Доброго времени суток!
На работе поставили задачу реализовать информационную систему, через которую пользователи подают заявку на предоставление доступа к различным ресурсам. Собираюсь использовать ASP.NET MVC (C#) + Oracle. С написанием самого приложения проблем нет, однако заказчик хочет внедрить подписание документов (заявок) электронной подписью: т.е. пользователь подает заявку, работник IT отдела обрабатывает ее и подписывает своей ЭЦП, после чего заявка отправляется в работу. Собственно вопрос: как реализовать работу с электронной подписью?
Усиленно читаю про электронные подписи, но никак не могу избавиться от каши в голове. Предположим, что есть форма заявки (html) заполненная. Мы ее сериализуем в JSON, затем этот JSON мы должны подписать ЭЦП и положить на хранение в БД, рядом с самой заявкой. Правильная ли это мысль? Как происходит сам процесс подписывания? Может, есть уже готовые бесплатные решения?
Сейчас мучаюсь с КриптоПро ЭЦП Browser plug-in, но пока понимания маловато.
к примеру ребята из сбис пошли по своему пути, они взяли десктопный клиент, который одной стороной работает с эцп, второй дает все это браузеру. По сути тоже самое, но решили по каким-то причинам свой велосипед делать. так же можно работать с эцп через яву, но вроде как только 32 битную, что тоже создает некоторые неудобства. А вообще стоит искать подходящий инструмент типо плагина. С криптопро браузер плагином я был связан как юзер, достало, что сайт почему-то систематически улетал из доверенных и терял доступ через плагин к эцп.
Если под формой заявки имеется ввиду просто HTML-форма, то в принципе вы правы: данные формы сериализуете, например, в json. Полученную строку подписываете с помощью CryproPro Browser Plugin (вероятно, тут нужен будет интерфейс для выбора сертификата, которым будут подписываться данные). Подпись можете сделать открепленную (ведь данные формы вы все равно сохраняете). Затем все это барахло передаете на сервер и сохраняете в БД.
Затем вас попросят написать интерфейс для проверки подписи, но это уже другая история :)