Возможны две цели авторизации:
- Вход в авторизованную зону (пользователь будет авторизован в ней до окончания сеанса работы с текущим приложением)
- Получение токена для совершения оплаты со своего счета. Результатом успешной авторизации является возврат зашифрованного одноразового токена
О терминологии. Аутентификация - это установление подлинности пользователя, а авторизация - разрешение на совершение им определенных действий. Пользователь может быть аутентифицирован, но не уполномочен совершать определенное списание со счета. Поэтому на вход сценария должен в общем случае передаваться объект авторизации, т.е. указание запрашиваемого действия. В текущей версии сценария предполагается, что запрашиваемое действие может быть только одно: любые действия владельца аккаунта с объектами своего аккаунта, и указание объекта авторизации здесь опущено. Следствием этого также является то, что аутентификацию можно в этом контексте можно называть авторизацией, и наоборот. В данном описании используется слово "авторизация".
Предусловия
В данном описании предполагается, что системе уже известно (выбрано пользователем) платежное приложение, в котором будет осуществляться авторизация, а также цель авторизации (см. первый абзац описания).
Платежное приложение, которое предполагает возможность аутентификации и авторизации пользователя, должно зарегистрировать в системе поддерживаемые методы авторизации. Возможные методы авторизации в системе:
- Ввод пары логин/пароль
- Ввод пары логин/пароль, затем ввод одноразового пароля
- Ввод карты в считыватель (или поднесение карты NFC), затем ввод PIN-кода (используется только с целью получения токена)
- Ввод карты в считыватель (или поднесение карты NFC), ввод PIN-кода, затем ввод одноразового пароля (не рассматриваем в текущей версии)
- Ввод карты в считыватель (или поднесение карты NFC), затем ввод пароля пользователя
- Ввод карты в считыватель (или поднесение карты NFC), ввод пароля пользователя, затем ввод одноразового пароля
- Проверка биометрического образа - однофакторная авторизация (не рассматриваем в текущей версии)
- Проверка биометрического образа, затем ввод пароля (не рассматриваем в текущей версии)
Для ввода пароля у приложения должна быть настройка политики, определяющая допустимое количество ошибочных вводов пароля подряд для одного сценарий авторизации. Для одноразового пароля у приложения должны быть настройки политики, определяющие время жизни одноразового пароля и время, через которое пользователь может запросить другой пароль, а также допустимое количество ошибочных вводов одноразового пароля подряд для одного сценарий авторизации.
Одноразовый пароль не используется при авторизации с использованием PIN от карты. По стандартам международных платежных систем, авторизация с номером карты и пином является достаточной. Усиление защиты с помощью одноразового пароля технически возможно, но в данной версии сценария не рассматривается, поскольку требует реализации соответствующей логики на сервере авторизации карточных транзакций, вендором которого зачастую является третья сторона.
Сценарий
Открывается экран идентификации, на котором, в зависимости от действий пользователя, также выбирается и способ идентификации. Способа идентификации возможно два: по логину или по карте. Соответственно, сценарий запоминает либо логин, либо данные карты, и передает их приложению для продолжения процесса.
-
Приложение проверяет логин либо данные карты на валидность (возможный, но не обязательный шаг). Оба вида проверки проводятся только на усмотрение приложения. Если проверка логина производится, то она должна занимать время порядка нескольких секунд, чтобы затруднить подбор списка логинов "брутфорсом" (на терминалах Киви это около 5 секунд). Предполагается, что подлинный пользователь почти никогда не ошибается со своим логином, поэтому один 5-секундный таймаут его не затруднит. Проверка данных карты может проходить так быстро, как может приложение. Если проверка номера карты производится, то ее результатом может быть сообщение о том, что карта была украдена, и необходимо забрать ее в стекер.
- Если проверка логина дала отрицательный результат (например, такого логина не существует среди зарегистрированных пользователей), то пользователю выводится сообщение "имя пользователя не найдено", после чего производится возврат на экран идентификации
- Если проверка карты дала отрицательный результат, то пользователю выводится сообщение "карта не распознана", и сценарий завершается (выходит в вызвавший сценарий)
- Если от сервера пришла команда забрать карту, то считыватель забирает карту, и пользователю выводится сообщение "карта изъята по требованию банка" (в сообщении приводятся контакты банка-владельца терминала), после чего сценарий завершается (выходит в вызвавший сценарий)
В случае успешной идентификации по логину или по карте, приложение уточняет сценарий авторизации для этого конкретного пользователя. Например, по умолчанию у пользователей может быть авторизация по логину и паролю, а некоторые пользователи установили себе повышенный уровень безопасности, требующий ввода одноразового пароля.
-
Открывается один из экранов, в зависимости от типа идентификатора пользователя:
- Экран ввода пароля
- Экран ввода PIN-кода Эти экраны очень похожи, однако описаны по отдельности, т.к. их реализация может быть в принципе различной.
-
Если вводился пароль, то приложение проводит проверку пары логин/пароль или номер_карты/пароль (если же вводился PIN - то см. шаг 7). Если пароль неверный, то пользователю выводится сообщение "неверный пароль", и производится возврат на предыдущий шаг с вводом пароля, либо выход из сценария авторизации (зависит от настроек и логики приложения). Если проверка прошла успешно:
- Если сценарий авторизации в приложении для данного пользователя не подразумевает ввода одноразового пароля, то пользователь авторизован в приложении (переход на шаг 8).
- Иначе см. шаг 6.
-
Если сценарий авторизации в приложении для данного пользователя подразумевает ввод одноразового пароля, то открывается экран ввода одноразового пароля. По окончании ввода одноразового пароля приложение проверяет сразу три величины: логин либо номер карты, пароль, и одноразовый пароль.
- Если проверка успешна, то пользователь авторизован в приложении (переход на шаг 8).
- Если одноразовый пароль введен неверно, то на этом же экране ввода одноразового пароля отображается сообщение "Введен неверный одноразовый пароль. Нажмите здесь, чтобы получить новый", и появляется соответствующая кнопка для повторного запроса пароля.
- Если срок действия одноразового пароля истек, то на этом же экране ввода одноразового пароля отображается сообщение "Срок действия одноразового пароля истек. Нажмите здесь, чтобы получить новый", и появляется соответствующая кнопка для повторного запроса пароля.
Здесь описывается ветвь, когда на шаге 4 был введен PIN от предъявленной карты. Введенный PIN не проверяется сразу. Он запоминается в защищенной области системы для последующей передачи на сервер в так называемом PIN-блоке. Проверка PIN производится в момент авторизации транзакции вместе с проверкой номера карты. Если проверка даст отрицательный результат, то транзакция будет отклонена. Такая проверка находится за рамками сценария авторизации. Таким образом, пользователь после ввода любого PIN автоматически считается авторизованным, однако лишь в том случае, когда целью авторизации было получение токена на совершение транзакции (см. шаг 8). Для входа в авторизованную зону метод с вводом PIN использоваться не может.
-
Пользователь авторизован. В зависимоти от цели авторизации, возможны варианты дальнейших действий системы:
- Если целью авторизации был вход в авторизованную зону, то сценарий переходит на основной экран, определенный приложением для авторизованного пользователя (зависит от приложения; например, меню личного кабинета). Далее, в течение всего сеанса работы пользователя с приложением, оно работает в режиме авторизованной зоны. Сутью авторизованной зоны является то, что при попадании на любой экран этого приложения (в том числе когда производится переход с экранов других приложений) ему доступен идентификатор пользователя (уже без пароля) и признак того, что этот пользователь авторизован. Авторизованная зона действует до момента, когда пользователь вышел в главное меню, или сработал таймаут неактивности его в данном приложении (по умолчанию 3 минуты, в течение которых пользователь мог взаимодействовать с терминалом, но не взаимодействовать с данным приложением), или был выполнен сценарий окончания взаимодействия пользователя с терминалом и произведен переход в режим бездействия и ожидания терминала.
- Если целью авторизации было получение токена на совершение транзакции, то сценарий получает от приложения токен и выходит в ту точку, откуда данный сценарий авторизации был вызван.