Такие методы, как 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
.Фактическая работа этого расширения показана здесь
Этапы тестирования:
Установите драйверы устройств для USB-токена или смарт-карты - это должно сделать вашСертификат в хранилище сертификатов Windows
Установка настройка , указанная выше.
Перезапуск браузера Chrome.
Открыть эту ссылку
Введите ID пользователя и пароль и нажмите кнопку Регистрация - здесь будет предложено выбрать Цифровую подпись изарегистрируйте его на сервере (только для этого сеанса - не постоянно).
Затем снова введите тот же идентификатор пользователя и пароль, выберите тот же сертификат и нажмите Логин .Выбор другого сертификата не позволит войти в систему.
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»:
Аутентификация пользователя из браузера