Анонимная регистрация (с уникальным идентификатором)
Примечание
Совокупность ключей аутентификации, устанавливаемых на устройство пользователя, для удобства упоминания может быть названа в описании процесса вектором аутентификации (ВА).
Данный способ регистрации заключается в подтверждении учетной записи Пользователя в КриптоПро Ключ и привязке к ней мобильного устройства при помощи уникального идентификатора (Alias) и обладает следующими особенностями:
- необходима предварительная регистрация мобильного устройства Пользователя;
- уникальный идентификатор вектора аутентификации создается средствами КриптоПро Ключ, и Пользователю нет необходимости его запоминать.
- уникальный идентификатор вектора аутентификации должен содержаться в заявительных документах Пользователя;
- для привязки мобильного устройства нет необходимости сканировать QR-код.
Сценарий состоит из следующих этапов.
- Предварительная регистрация мобильного устройства.
- Привязка Оператором мобильного устройства к учетной записи Пользователя.
- Подтверждение Пользователем привязки мобильного устройства к учетной записи.
На первом этапе Пользователь из мобильного приложения на базе КриптоПро Ключ SDK отправляет запрос на регистрацию мобильного устройства в КриптоПро Ключ. В ответ КриптоПро Ключ отправляет в мобильное приложение вектор аутентификации (ВА) и уникальный идентификатор ВА. Уникальный идентификатор генерируется в КриптоПро Ключ и является 12-символьной строкой, состоящей из цифр и латинских букв. Полученные данные сохраняются в мобильном приложении, Пользователь может защитить ВА с помощью ПИН-кода.
На втором этапе требуется визит Пользователя или его Доверенного лица к Оператору. Оператор выполняет следующие действия.
- Идентифицирует Пользователя.
- Проверяет наличие учетной записи Пользователя в по уникальным признакам (СНИЛС, ИНН и т.п.). Если учетная запись отсутствует, Оператор создает ее.
- Готовит и передает Пользователю на подпись, либо получает от Пользователя подписанные заявительные документы, необходимые для начала обслуживания Пользователя (если учетная запись ранее не существовала) и для привязки мобильного устройства Пользователя к его учетной записи, проверяет их. В заявительных документах обязательно присутствует идентификатор ВА, который Пользователь видит в мобильном приложении на базе КриптоПро Ключ SDK и вписывает в эти документы, либо сверяет, если идентификатор там уже содержится.
- Находит по идентификатору ВА неподтвержденное мобильное устройство Пользователя и привязывает его к учетной записи.
- Если идентификация пользователя выполняется удаленно, опционально может быть использован QR-код для завершения привязки МП к УЗ пользователя. QR-код создает Оператор и безопасным образом передает его Пользователю.
На третьем этапе Пользователю следует подтвердить данные учетной записи в мобильном приложении на своем мобильном устройстве. Подтверждение данных учетной записи может быть инициировано Пользователем или мобильным приложением.
Для подтверждения учетной записи мобильное приложение отображает Пользователю сведения об учетной записи и предоставляет возможность подтвердить их или отказаться. Привязка мобильного устройства Пользователя к учетной записи будет завершена после получения подтверждения. Если Пользователь не согласился с полученными учетными данными, ему следует отказаться от их подтверждения и обратиться к Оператору.
Используемое API SDK
Policy.getParamsDSS
– используется для проверки, разрешен ли сценарий.
Policy.getUserDevices()
– актуализация данных о ключах аутентификации.
Auth.getAuthList()
– получение списка доступных в МП ключей аутентификации.
Auth.removeAuth()
– удаление ключей аутентификации.
Последовательность вызовов для регистрации:
Auth.init()
-> Auth.confirm()
-> (Auth.scanQR
) -> Auth.verify()
Описание последовательности вызова методов
1. Для начала выполнения сценария необходимо получить URL-адрес сервера одним из следующих способов.
- Адрес может быть выбран из предопределенного списка серверов
- Пользователь может ввести адрес вручную
Адрес имеет следующий вид: https://[hostname]:[port]/[servicename].
2. Необходимо проверить, разрешен ли сценарий Online-регистрации на выбранном сервере. Для этого необходимо получить настройки сервера.
- МП вызывает метод SDK
Policy.getParamsDSS
; - SDK возвращает настройки сервера – paramsDSS;
- В настройках сервера необходимо проверить значение True флага
isSelfRegistrationEnabled
.
3. Если Online-регистрация отключена (в paramsDSS -> isSelfRegistrationEnabled = false), то сценарий завершается с ошибкой – «Online-регистрация запрещена».
4. Из настроек сервера МП определяет доступные способы защиты ключей аутентификации:
- Без защиты
- Только пароль
- Пароль и биометрия
Для определения доступных способов защиты необходимо проверить параметры paramsDSS -> getKeyProtectionFlags():
- denyOSProtection
- passwordPolicy
Требования к сложности пароля (passwordPolicy) приведены в разделе «Требования к паролю».
Если passwordPolicy = 0, то доступно сохранение ключей аутентификации без пароля.
Примечание
Мобильное приложение использует только два способа защиты – «Пароль», «Пароль и биометрия», то есть проверяет только значение параметра denyOSProtection.
5. МП запрашивает у пользователя имя учетной записи.
Примечание
Имя учетной записи используется только в мобильном приложении. Имя не передается на сервер. Имя используется как человекочитаемый идентификатор ключей аутентификации в мобильном приложении.
6. МП получает Push-адрес, который будет передан на сервер при регистрации.
7. МП отправляет на сервер запрос на регистрацию Auth.init()
.
После выполнения данного шага ключи аутентификации будут находиться в статусе Created.
8. МП подтверждает серверу успешное получение ключей аутентификации Auth.confirm()
.
После выполнения данного шага ключи аутентификации будут находиться в статусе Installed.
9. Далее МП должно дождаться, когда ключи аутентификации будут привязаны к УЗ на сервере. После привязки к УЗ ключи аутентификации перейдут в статус NotVerified.
- Для проверки статуса ключей аутентификации необходимо обновить информацию о ключах аутентификации с помощью метода
Policy.getUserDevices
. В полученном списке ключей аутентификации нужно найти ключи аутентификации МП поKID
. - У найденного по
KID
объекта DeviceInfo необходимо проверить полеgetState()
. Если оно перешло в статус NotVerified, необходимо перейти к следующему шагу.
10. После того как устройство перешло в статус NotVerified, необходимо определить тип подтверждения привязки ключей аутентификации к УЗ:
- с QR-кодом
- без QR-кода
Для этого необходимо у объекта DeviceInfo проверить поле isNonceRequired. Если значение равно true, то для завершения привязки требуется отсканировать QR-код.
11. (опционально) Выполняется только в случае DeviceInfo->isNonceRequired = true.
Необходимо вызвать метод Auth.scanQR()
. Тип полученного QR-кода должен быть
RawQR -> getType() = Verification.
12. Вызвать метод Auth.verify()
. После данного вызова ключи аутентификации
перейдут в статус Active.
Статусы ключей аутентификации
Статус | Отображаемое имя |
---|---|
Installed | Ожидает подтверждения Оператором/сертификатом |
NotVerified | Ожидает подтверждения в приложении |
NotVerified + isNonceRequired | Ожидает сканирования QR-кода |
Active | Активный |
Active + isDefault | Используется по умолчанию |
Примечание
Статус Created невозможен, так как методы Auth.init
и Auth.confirm
вызываются последовательно. А в случае ошибки вызова метода Auth.confirm
ключи аутентификации удаляются.
Экраны МП
1. Переход к выполнению сценария выполняется c экрана «Выбора сценариев». Данный экран отображается:
- как первый экран приложения, если на устройстве нет зарегистрированных ключей, то есть метод
Auth.getAuthList()
вернул пустой список; - при нажатии кнопки «Привязать учётную запись» на экране Настройки -> «Учетные записи». Данный экран доступен, если на устройстве есть хотя бы один ключ аутентификации (в любом статусе).
2. После выбора сценария пользователю может быть отображен экран выбора сервера, либо выбор сервера может быть произведен "прозрачным" для пользователя способом. В случае выбора сервера вручную данный экран позволяет либо выбрать сервера DSS из предопределенного списка, либо ввести имя сервера вручную. В случае автоматического выбора сервера переход к следующему экрану происходит автоматически.
3. После того, как приложение определило сервер, на который будет отправлен запрос регистрации, отображается экран ввода имени профиля пользователя и имени устройства.
4. После выбора сервера или ввода адреса сервера вручную вызывается API SDK регистрации:
Policy.getParamsDSS()
– для проверки разрешен ли сценарий на сервере. Если сценарий запрещен, то пользователю отображается соответствующее предупреждение и МП возвращается к исходному экрану:- выбор сценария, если на устройстве нет доступных ключей аутентификации;
- экрану «Настройки» -> «Учетные записи», если на устройстве есть хотя бы один ключ аутентификации в любом статусе.
Auth.init()
– для отправки заявки на регистрацию на сервер. SDK отобразит UI для задания нового пароля на полученные с сервера ключи аутентификации. Для вызова метода приложение получает push-адрес устройства.Auth.confirm()
– для подтверждения серверу успешного получения ключей аутентификации. Метода вызывается только в случае успешного вызоваAuth.init()
. Метод вызывается непосредственно сразу после методаAuth.init()
Примечание
В случае ошибки вызова метода Auth.confirm()
ключи аутентификации удаляются Auth.removeAuth()
.
5. Приложение переходит на экран только что созданной учетной записи в меню «Настройки» -> «Учетные записи».
Если на устройстве доступен только один вектор аутентификации в статусе Created, Installed, NotVerified, ApproveRequired, то в приложении должны быть заблокированы все экраны, кроме следующих:
* «Настройки» -> «Учетные записи»,
* «Настройки» -> «Защита»,
* Раздел приложения (выбор на тулбаре) "Помощь".
Примечание
В данном случае первым экраном приложения после запуска должен быть «Настройки» -> «Учётные записи».
Если на устройстве доступны ключи аутентификации в статусе Active, то в приложении доступны все действия.
Примечание
В данном случае первым экраном приложения после запуска должен быть «Документы».
6. Для продолжения привязки пользователь должен нажать на плашку с учетной записью. Внутри помимо информации об учетной записи отображается идентификатор Заявки.
7. Пользователь должен дождаться, когда Оператор привяжет устройство к УЗ
пользователя на сервере, то есть ключи аутентификации перейдут в статус
NotVerified. При переходе на экран «Настройки» -> «Учётные записи» приложение
актуализирует сведения об устройствах вызвав метод Policy.getUserDevices
.
8. После перехода ключей аутентификации в статус NotVerified пользователь завершает регистрацию МП. Регистрация завершается с QR-кодом или без него в зависимости от флага DeviceInfo -> isNonceRequired:
- true –
scanQR
+verify
- false –
verify
9. После успешного вызова метода verify
устройство переходит в статус Active.