Показать/Скрыть содержание

    Регистрация при помощи сертификата

    Данный способ инициализации заключается в подтверждении учетной записи Пользователя и привязке к ней мобильного устройства при помощи самостоятельно полученного сертификата. Описание сценария инициализации приведено в подразделе 5.3 документа «ЖТЯИ.00118-01 96 01 КриптоПро Ключ. Общее описание».

    Используемое API SDK

    Policy.getParamsDSS – используется для проверки, разрешен ли сценарий. Policy.getUserDevices() – актуализация данных о ключах аутентификации. Auth.removeAuth() – удаление ключей аутентификации.

    Пример последовательности вызовов для регистрации: Ввод пользователем адреса сервера, локального имени УЗ -> Policy_V2.shared.getParamsDSS -> Auth_V2.shared.normalInit -> Auth_V2.shared.confirm -> SigningKey_V2.shared.listExternalKeys -> DSSCert_V2.shared.installCertificateExternal -> DSSPolicy_V2.shared.getUserDevices -> DSSAuth_V2.shared.verifyByCert

    Примечание

    Последовательность вызовов является приблизительной и может быть оптимизирована разработчиком мобильного приложения в соответствии с целевыми бизнес-требованиями.

    Описание последовательности вызова методов

    1. Для начала выполнения сценария необходимо получить URL-адрес сервера одним из следующих способов.

    • Адрес может быть выбран из предопределенного списка серверов
    • Пользователь может ввести адрес вручную

    Адрес имеет следующий вид: https://[hostname]:[port]/[servicename].

    2. Необходимо проверить, разрешен ли сценарий самостоятельной регистрации и регистрации по сертификату на выбранном сервере. Для этого необходимо получить настройки сервера.

    • МП вызывает метод SDK Policy.getParamsDSS;
    • SDK возвращает настройки сервера – paramsDSS;
    • В настройках сервера необходимо проверить значение True флага isRegistrationByCertificateSupported.

    3. Если поддержка сценария регистрации по сертификату отключена (в paramsDSS -> isRegistrationByCertificateSupported = false), то сценарий завершается с ошибкой – «Регистрация по сертификату запрещена на сервере».

    4. Из настроек сервера МП определяет доступные способы защиты ключей аутентификации:

    • Без защиты
    • Только пароль
    • Пароль и биометрия

    Для определения доступных способов защиты необходимо проверить параметры paramsDSS -> getKeyProtectionFlags():

    • denyOSProtection - биометрические данные,
    • passwordPolicy - парольная политика (информационное поле).

    Требования к сложности пароля (passwordPolicy) приведены в разделе «Требования к паролю».

    Если passwordPolicy = 0, то доступно сохранение ключей аутентификации без пароля.

    Внимание!

    Поле passwordPolicy в политике взаимодействия с сервером является информационным для удобства разработчика мобильного приложения. Строгие значения парольной политики будут переданы во время создания на сервере ключей аутентификации. В случае последующего несовпадения настроек мобильного приложения с ними, SDK выдаст ошибку.

    Примечание

    Мобильное приложение использует только два способа защиты – «Пароль», «Пароль и биометрия», то есть проверяет только значение параметра denyOSProtection.

    5. МП запрашивает у пользователя имя учетной записи.

    Примечание

    Имя учетной записи используется только в мобильном приложении. Имя не передается на сервер. Имя используется как человекочитаемый идентификатор ключей аутентификации в мобильном приложении.

    6. МП получает Push-адрес, который будет передан на сервер при регистрации.

    7. МП отправляет на сервер запрос на регистрацию Auth.init(). После выполнения данного шага ключи аутентификации будут находиться в статусе Created.

    8. МП подтверждает серверу успешное получение ключей аутентификации Auth.confirm(). После выполнения данного шага ключи аутентификации будут находиться в статусе Installed.

    9. МП начинает процедуру установки сертификата, с помощью которого будет произведена инициализация устройства. Для этого необходимо прочитать список сертификатов и ключей подписи на внешнем носителе listExternalKeys. В случае обнаружения на носителе подходящих сертификатов МП устанавливает выбранный сертификат при помощи installCertificateExternal. В процессе выполнения сертификат также будет установлен на сервер.

    Примечание

    После успешной установки сертификата в мобильное приложение и на сервер допустим "разрыв" сценария привязки с последующим возвращением к подтверждению привязки устройства.

    10. Далее МП должно дождаться, когда ключи аутентификации будут привязаны к УЗ на сервере. После привязки к УЗ ключи аутентификации перейдут в статус NotVerified.

    • Для проверки статуса ключей аутентификации необходимо обновить информацию о ключах аутентификации с помощью метода Policy.getUserDevices. В полученном списке ключей аутентификации нужно найти ключи аутентификации МП по KID.
    • У найденного по KID объекта DeviceInfo необходимо проверить поле getState(). Если оно перешло в статус NotVerified, необходимо перейти к следующему шагу.
    • У найденного по KID объекта DeviceInfo необходимо проверить поле signatureRequired. Если оно имеет значение True, необходимо перейти к следующему шагу.

    11. После того как устройство перешло в статус NotVerified и флаг signatureRequired взведен, необходимо подтвердить привязку устройства при помощи метода verifyByCert. После данного вызова ключи аутентификации перейдут в статус Active.

    Статусы ключей аутентификации

    Статус Отображаемое имя
    Installed Ожидает подтверждения Оператором/сертификатом
    NotVerified Ожидает подтверждения в приложении
    NotVerified + isNonceRequired Ожидает сканирования QR-кода
    Active Активный
    Active + isDefault Используется по умолчанию
    Примечание

    Статус Created невозможен, так как методы Auth.init и Auth.confirm вызываются последовательно. А в случае ошибки вызова метода Auth.confirm ключи аутентификации удаляются.

    В начало © ООО "КРИПТО-ПРО", 2000–2026