Всем привет!
В этой заметке мы покажем Вам на сколько просто внедрить аутентификацию по цифровым сертификатам в информационную систему с помощью 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.
Надеемся на то, что эта статья поможет Вам и Вашим партнерам строить более защищенные и удобные в использовании информационные системы в краткие сроки.
Благодарим за внимание!
The SIGEX portal uses cookies and other browser data storage technologies only for personalization of the user experience: displaying notifications, reminders and tips, as well as storing some settings. We do not use these technologies to track our users, collect information about them or display advertisements and do not provide such capabilities to third parties. Details are outlined in the Privacy Policy.
We conduct webinars about electronic documents, digital signatures and legal significance.