Аутентификация пользователя из браузера с использованием сертификата цифровой подписи на USB-токене или смарт-карте - PullRequest
1 голос
/ 19 апреля 2019

Я хотел бы знать код JavaScript для аутентификации пользователя из браузера с цифровой подписью на USB-токене или смарт-карте клиента.Но я не понимаю, как подписать цифровой запрос на вход, скажем, authtoken или UserID и Passwrd из браузера, используя USB Token.Мне нужно всплывающее окно в браузере, чтобы выбрать форму сертификата USB Token.У моего пользователя на ПК установлены токены USB разных производителей и соответствующие драйверы.

Мне нужно решение, при котором пользователю не нужно выбирать драйвер токена.

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Такие методы, как java-апплеты, Active X и т. Д., Постепенно исключаются из новых предложений Modern Browser.В последнее время много говорят об API WebCrypto, но на данный момент API WebCrypto не предоставляет доступ к (Windows) или любым другим хранилищам ключей или локальному устройству шифрования USB / Smartcard.

Для аутентификации из браузера с использованием цифровой подписиОдним из таких бесплатных расширений для Chrome является Signer.Digital Chrome.Локальную систему (хост, работающий за браузером Chrome в Windows) можно загрузить с https://signer.digital/downloads/Signer.Digital.Chrome.Host.Setup.zip. При установке и перезапуске Chrome автоматически добавится Signer.Digital Chrome Extension

.Фактическая работа этого расширения показана здесь

Этапы тестирования:

  1. Установите драйверы устройств для USB-токена или смарт-карты - это должно сделать вашСертификат в хранилище сертификатов Windows

  2. Установка настройка , указанная выше.

  3. Перезапуск браузера Chrome.

  4. Открыть эту ссылку

  5. Введите ID пользователя и пароль и нажмите кнопку Регистрация - здесь будет предложено выбрать Цифровую подпись изарегистрируйте его на сервере (только для этого сеанса - не постоянно).

  6. Затем снова введите тот же идентификатор пользователя и пароль, выберите тот же сертификат и нажмите Логин .Выбор другого сертификата не позволит войти в систему.

Javascript для вызова метода с внутреннего номера:

Чтобы зарегистрировать сертификат на сервере:

//Get Selected Certificate Information 
SignerDigital.getSelectedCertificate()
    .then(
        function (CertInfo) {        
    //Success returns Certificate Subject and Thumbprint
        },
            function (errmsg) {
                //Send errmsg to server or display the result in browser.
              }
     );

Для аутентификации или входа в систему с использованием цифровой подписи:

SignerDigital.signAuthToken(authToken, "SHA-256")       //or "SHA256"
    .then(
        function (SignData) {        //Success returns Signed Auth Token
        },
            function (errmsg) {
                //Send errmsg to server or display the result in browser.
              }
     );

Для подписи в PDF:

    //Calculate Sign for the Hash by Calling function from Extension SignerDigital
    SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")      //or "SHA256"
     .then(
            function (signDataResp) {
              //Send signDataResp to Server
        },
            function (errmsg) {
                //Send errmsg to server or display the result in browser.
              }
     );

ЕслиОшибка: возвращает сообщение об ошибке, начиная с «Ошибка SDHost»:

Аутентификация пользователя из браузера

Web Authentication using Digital Signature

0 голосов
/ 22 апреля 2019

Вы также можете проверить https://fortifyapp.com, у которого есть клиент, который после установки позволяет веб-приложениям использовать смарт-карты без необходимости вставлять смарт-карту пользователю.

При вставкеон проверяет карту, а затем пробует соответствующий драйвер и после загрузки веб-приложения через полифилл webcrypto может взаимодействовать с токеном / смарт-картой.

Подробнее о том, как это работает, можно прочитать здесь: https://unmitigatedrisk.com/?p=620

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...