Регистрация при помощи QR-кода
Примечание
Совокупность ключей аутентификации, устанавливаемых на устройство пользователя, для удобства упоминания может быть названа в описании процесса вектором аутентификации (ВА).
Данный способ регистрации заключается в подтверждении учетной записи Пользователя в КриптоПро Ключ и привязке к ней мобильного устройства при визите Пользователя (или его Доверенного лица) к Оператору и обладает следующими особенностями:
- не требуется предварительная регистрация мобильного устройства, т.е. Пользователь может совершить все необходимые действия во время визита к Оператору;
- уникальный идентификатор вектора аутентификации не используется;
- необходимо исключить возможность несанкционированного доступа к QR-коду Оператора и третьих лиц.
Оператор при визите к нему Пользователя или его Доверенного лица выполняет следующее:
- Идентифицирует Пользователя.
- Проверяет наличие учетной записи Пользователя по уникальным признакам (СНИЛС, ИНН и т.п.). Если учетная запись отсутствует, Оператор DSS создает ее.
- Готовит и передает Пользователю на подпись, либо получает от Пользователя подписанные заявительные документы для начала обслуживания Пользователя (если учетная запись ранее не существовала) и для привязки мобильного устройства Пользователя к его учетной записи, проверяет их.
- Создает QR-код для первичной аутентификации мобильного устройства Пользователя и последующего получения вектора аутентификации (ВА).
КриптоПро Ключ генерирует QR-код с начальным ВА, который должен быть передан Пользователю (либо его Доверенному лицу), способом, исключающим возможность несанкционированного ознакомления с ним Оператора и третьих лиц. Начальный ВА, передаваемый в QR-коде, может быть дополнительно защищен на коде активации (защита настраивается отдельно Администратором). Код активации доставляется Пользователю в SMS-сообщении или в сообщении электронной почты.
Пользователь сканирует QR-код при помощи мобильного приложения на базе КриптоПро Ключ SDK и вводит код активации, если он используется. Мобильное приложение связывается с КриптоПро Ключ, аутентифицируя себя с помощью начального ВА, после чего мобильное приложение привязывается к учетной записи и в него устанавливается вектор аутентификации. Пользователь может защитить ВА с помощью пароля (ПИН-кода).
Администратор может настроить сервер таким образом, что QR-код может использоваться только один раз. В этом случае привязка других мобильных устройств к той же учетной записи будет возможна только путем генерации новых QR-кодов.
Для подтверждения учетной записи мобильное приложение отображает Пользователю сведения об учетной записи и предоставляет возможность подтвердить их или отказаться. Привязка мобильного устройства Пользователя к учетной записи будет завершена после получения подтверждения. Если Пользователь не согласился с полученными учетными данными, ему следует отказаться от их подтверждения и обратиться к Оператору.
Используемое API SDK
Policy.getParamsDSS
– используется для проверки, разрешен ли сценарий.
Policy.getUserDevices()
– актуализация данных о ключах аутентификации.
Auth.getAuthList()
– получение списка доступных в МП ключей аутентификации.
Auth.removeAuth()
– удаление ключей аутентификации.
Последовательность вызовов для регистрации:
Auth.scanQR
-> Auth.kinit()
-> Auth.confirm()
-> Auth.verify()
Описание последовательности вызова методов
1. МП сканирует QR-код, вызвав API SDK Auth.scanQR()
. Необходимо учитывать следующие особенности данного метода:
- тип полученного QR-кода должен быть RawQR -> getType() = Kinit;
- в данных, полученных из QR-кода, будет адрес сервера.
2. Необходимо проверить, требуется ли код активации для вызова метода
Auth.Kinit()
на выбранном сервере. Для этого необходимо получить
настройки сервера. Необходимо выполнить последовательно следующие действия.
- Получить политику сервера paramsDSS, вызвав в МП метод SDK
Policy.getParamsDSS
. - В настройках сервера необходимо проверить флаг keyActivationRequired, определяющий, используется ли код активации.
3. Из настроек сервера МП определяет доступные способы защиты ключей аутентификации:
- Без защиты
- Только пароль
- Пароль и биометрия
Для определения доступных способов защиты необходимо проверить параметры paramsDSS-> getKeyProtectionFlags():
- denyOSProtection
- passwordPolicy
Требования к сложности пароля (passwordPolicy) приведены в разделе «Требования к паролю». Если passwordPolicy = 0, то доступно сохранение ключей аутентификации без пароля.
Примечание
Мобильное приложение использует только два способа защиты – «Пароль», «Пароль и биометрия», то есть проверяет только значение параметра denyOSProtection.
4. МП запрашивает у пользователя имя учётной записи.
Примечание
Имя учетной записи используется только в мобильном приложении. Имя не передается на сервер. Имя используется как человекочитаемый идентификатор ключей аутентификации в мобильном приложении.
5. МП получает push-адрес, который будет передан на сервер при регистрации.
6. (опционально) Если для регистрации Auth.kinit()
требуется код активации, то
МП отображает экран для ввода кода активации.
7. МП отправляет на сервер запрос на регистрацию Auth.kinit()
.
После выполнения данного шага ключи аутентификации будут находиться в статусе Created.
8. МП подтверждает серверу успешное получение ключей аутентификации Auth.confirm()
.
После выполнения данного шага ключи аутентификации будут находиться в статусе NotVerified.
9. Вызвать метод Auth.verify()
. После данного вызова ключи аутентификации перейдут в статус Active.
Статусы ключей аутентификации
Статус | Отображаемое имя |
---|---|
NotVerified | Ожидает подтверждения в приложении |
Active | Активный |
Active + isDefault | Используется по умолчанию |
Примечание
Статус Created невозможен, так как методы Auth.kinit
и Auth.confirm
вызываются последовательно. А в случае ошибки вызова метода Auth.confirm
ключи аутентификации удаляются.
Примечание
Статус Installed в данном сценарии не используется, т.к. после подтверждения
установки ключей аутентификации (Auth.confirm
) устройство сразу переводится в
статус NotVerified. Статус Installed пропускается, так как ключи аутентификации
изначально привязаны к УЗ пользователя.
Экраны МП
1. Переход к выполнению сценария выполняется c экрана «Выбора сценариев». Данный экран отображается:
- как первый экран приложения, если на устройстве нет зарегистрированных ключей, то есть метод
Auth.getAuthList()
вернул пустой список; - при нажатии кнопки «Привязать учётную запись» на экране Настройки -> «Учётные записи». Данный экран доступен, если на устройстве есть хотя бы один ключ аутентификации (в любом статусе).
2. После выбора сценария отображается экран ввода имени профиля пользователя и имени устройства.
3. Далее МП вызывает метод SDK сканирования QR-кода Auth.scanQR()
.
4. После сканирования QR-кода МП должно проверить, требуется ли код подтверждения (активации) для регистрации. МП вызывает метод SDK Policy.getParamsDSS()
и проверяет флаг keyActivationRequired.
5. (опционально) Если для регистрации требуется код подтверждения, то МП отображает экран для ввода кода активации:
6. МП выполняет регистрацию на сервере. Для этого необходимо вызвать следующие методы API SDK:
Auth.kinit()
– для отправки заявки на регистрацию на сервер. SDK отобразит UI для задания нового пароля на полученные с сервера ключи аутентификации. Для вызова метода приложение получает push-адрес.Auth.confirm()
– для подтверждения серверу успешного получения ключей аутентификации. Метод вызывается непосредственно сразу и только в случае успешного вызоваAuth.kinit()
. В случае неудачного вызова метода рекомендуется удалить ключи аутентификации (Auth.removeAuth()
) и начать процесс подтверждения заново.Auth.verify()
– для подтверждения привязки МП к УЗ пользователя. Метод вызывается после успешного вызова методаAuth.confirm()
.
7. В зависимости от успеха выполнения метода подтверждения операции Auth.Verify()
, на устройстве
могут быть доступы ключи аутентификации в различных статусах.
Если на устройстве доступен только один вектор аутентификации в статусе Created, Installed, NotVerified, ApproveRequired, то в приложении должны быть заблокированы все экраны кроме:
* «Настройки» -> «Учётные записи»,
* «Настройки» -> «Защита»,
* Раздел приложения (выбор на тулбаре) "Помощь".
Примечание
В данном случае первым экраном приложения после запуска должен быть «Настройки» -> «Учетные записи».
Если на устройстве доступны ключи аутентификации в статусе Active, то в приложении доступны все действия.
Примечание
В данном случае первым экраном приложения после запуска должен быть «Документы».
- После успешного вызова метода
Auth.Verify()
устройство переходит в статус Active.