Всем привет!
В этой заметке мы покажем Вам на сколько просто внедрить аутентификацию по цифровым сертификатам в информационную систему с помощью SIGEX.
Внедрение аутентификации по цифровым сертификатам заманчиво по следующим причинам:
Работы по внедрению можно разделить на две составляющие:
Доработка веб интерфейса достаточно тривиальна, преимущественно сводится к дизайну страницы входа в систему и нескольким обращениям к NCALayer (либо KAZTOKEN mobile), детали будут приведены ниже.
Доработка серверных компонентов таит в себе множество подводных камней свзанных как с корректной проверкой цифровых подписей, так и с генерацией и управлением блоками уникальных данных для аутентификации. Ошибки в реализации веб интерфейса могут привести к тому, что клиенты не смогут входить в систему, в то время как ошибки в реализации серверных компонентов приведут к взломам и несанкционированному доступу к данным информационной системы.
API SIGEX позволяет значительно упростить реализацию серверных компонентов - все, что связано с управлением блоками уникальных данных и проверкой цифровых подписей, SIGEX берет на себя:
Этапы:
POST
/api/auth
- аутентификация, подготовительный этап - получение блока случайных данных. Выдачей блоков уникальных данных занимается SIGEX для предотвращения атак типа Повтор.POST
/api/auth
- аутентификация.При использовании SIGEX в качестве сервиса аутентификации серверу информационной системы, по большому счету, остается только маршрутизировать запросы между клиентом и SIGEX, а так же обработать результат аутентификации. Само же взаиможействие с SIGEX сводится к двум запросам API:
POST
/api/auth
- аутентификация, подготовительный этап - получение блока случайных данных,POST
/api/auth
- аутентификация - тут важно не забывать устанавливать параметр "external": true
.Вернемся к вопросу доработки веб интерфейса, как уже было написано, он сводится к двум задачам:
В разрезе пользовательского интерфейса странице входа достаточно отображать сообщение о том, что выполняется аутентификация и скоро отобразится окно NCALayer. Так же хорошей практикой считается отображение уведомления о том, что на рабочей станции или мобильном устройстве пользователя не обнаружено ни NCALayer, ни KAZTOKEN mobile - в этом случае желательно подсказать пользователю как выполнить настройку соответствующего программного обеспечения.
Взаимодействие с NCALayer (либо KAZTOKEN mobile) выглядит следующим образом:
kz.gov.pki.knca.commonUtils.getActiveTokens
который вернет перечень типов подключенных аппаратных носителей ключевой информации;kz.gov.pki.knca.commonUtils.getActiveTokens
свидетельствует о том, что обнаружены аппаратные носители, то разумно в следующем запросе указать тип аппаратного носителя для использования, иначе указывать зарезервированный для файловых хранилищ тип "PKCS12"
;kz.gov.pki.knca.commonUtils.createCAdESFromBase64
с указанием выбранного на предыдущем этапе типа хранилища, параметром keyType
установленным в "AUTHENTICATION"
, блоком уникальных данных в качестве подписываемых данных и параметром attached
установленным в false
;В случае использования нового модуля NCALayer (либо KAZTOKEN mobile) kz.gov.pki.knca.basics
, взаимодействие проще:
kz.gov.pki.knca.basics.sign
с блоком уникальных данных в качестве подписываемых данных;А еще проще использовать JS библиотеку с открытым исходным кодом https://github.com/sigex-kz/ncalayer-js-client.
Надеемся на то, что эта статья поможет Вам и Вашим партнерам строить более защищенные и удобные в использовании информационные системы в краткие сроки.
Благодарим за внимание!
Портал SIGEX использует файлы cookie и другие технологии хранения данных в браузере только для персонализации пользовательского опыта: отображения уведомлений, напоминаний и подсказок, а так же хранения некоторых настроек. Мы не используем этих технологий для слежения за своими пользователями, сбора о них информации или отображения рекламы и не предоставляем подобных возможностей третим сторонам. Детали изложены в Политике конфиденциальности.
Мы проводим вебинары про электронные документы, ЭЦП и юридическую значимость.