
Для кого эта статья
Статья для дизайнеров интерфейсов, которые желают понять то, как работают процессы регистрации, авторизации, восстановления пароля, применяемые в различных системах. Если вы разработчик/дизайнер, и нашли ошибку/неточность — то дайте мне знать (я с радостью доработаю статью).
Начало
Сегодня я хотел бы рассказать о том, как проходит аутентификация в приложениях самых различных платформ — начиная от мобильных приложений, заканчивая консольными утилитами.
Аутентификация — это процесс, при котором пользователь подтверждает подлинность своей личности в какой-либо системе. Система предоставляет личные данные только своему владельцу.
Механизм аутентификации на базовом уровне довольно прост — вам нужно ввести данные в виде логина и пароля. Проверить данные на совпадение, и если данные совпали между собой — то вы являетесь подлинным обладателем учётной записи.
Учётная запись — это хранимый в системе набор данных о пользователе. К учётной записи как правило имеет доступ лишь один пользователь — её владелец.
Пример:
В кино, когда шпиона просят назвать кодовую фразу для подтверждения своей личности — то по факту осуществляется процесс аутентификации пользователя. Если кодовая фраза (пароль) верный — то шпиону доверяют и предоставляют закрытые от остальных данные. (Утрированно)
Процессы аутентификации
Так как наши данные при регистрации в каком либо сервисе хранятся в базе данных — то к процессу аутентификации применяются базовые принципы работы с базами данных (далее БД) — это чтение, запись, обновление и удаление данных. При этом, во время каждого из действий с БД проверяется возможность совершения этих действий пользователем.
-
Регистрация (CREATE) — создание в системе вашей личной учётной записи
-
Авторизация (READ) — получение доступа к вашей личной учётной записи
-
Восстановление доступа к учётной записи (UPDATE) — если вы на пример забыли пароль — то его можно сменить, подтвердив свою личность.
-
Удаление (DELETE) — удаление вашей учётной записи из системы
Варианты фиксирования уникального имени пользователя (логин)

Есть несколько возможных способов проверки подлинности при предоставлении доступа к данным учётной записи в какой-либо системе. Логином могут выступать следующие пункты:
-
Email (username@mail.com)
-
Номер телефона (+996 777 777 777)
-
Уникальное имя (username)
-
Учётная запись в стороннем сервисе (Google, Facebook, Apple… и так далее)
При аутентификации в сервисе А через сторонние сервисы Б — вам не нужно проходить процесс подтверждения личности в сервисе Б, а лишь нужно подтвердить свою личность в сервисе А. (На пример зайти в учётную запись Google, и при помощи её зайти в учётную запись Figma). Могут использоваться проверки в виде сообщения на почту со ссылкой для подтверждения регистрации/авторизации.
Варианты подтверждения логина (пароль)

Логин — это ещё не полный доступ к учётной записи, ему всегда сопутствует секретный ключ (пароль), который работает только в связке Логин-Пароль (или что-то из списка ниже).
-
Пароль (password9379992*)
-
SMS код (9379992SMS)
-
Код в электронном сообщении (9379992MAIL)
-
PIN код (9379992)
-
Ключи доступа / Токены (как пример ssh key)
-
Сканеры внешности (лицо, отпечаток пальца)
Токен — это уникальный (как правило длинный) набор символов для доступа к учётной записи, который может храниться на устройстве (телефон, компьютер, флешка, чип карта). Токен обычно не вводят вручную в поле ввода пароля, а предоставляют системе целый файл с токеном, для проверки подлинности.
Необходимость интернет соединения при различных видах аутентификации
Не все виды аутентификации пользователя требуют интернет соединения для проверки соответствия логина и пароля пользователя. На пример: вы можете без подключения к интернету разблокировать свой телефон, компьютер, сейф с кодовым замком или открыть дверь в подъезд.
Соединение нужно для тех типов аутентификации, в которых личные данные пользователей хранятся на удалённом сервере. Это как доступ к банковской ячейке, открыть которую вы можете только придя в банк, подтвердив свою личность и в присутствии охраны.
Комбинации ввода логина и пароля
Описанные выше варианты логинов и паролей могут комбинироваться между собой для проверки подлинности пользователя. На пример:
|
|
Номер телефона |
Уникальное имя |
|
Пароль |
Пароль |
Пароль |
|
Токен |
Токен |
Токен |
|
PIN код |
PIN код |
PIN код |
|
Внешность |
Внешность |
Внешность |
|
Код в Email сообщении |
SMS код |
В таблице каждая колонка — это варианты логина, а строки — это доступные варианты паролей.

Механизм проверки соответствия логина и пароля

Процесс проверки соответствия логина и пароля проходит в несколько этапов.
-
Вводим логин
-
Вводим пароль
-
Отправляем данные на проверку
-
Система получает данные, которые ввёл пользователь, ищет в своей базе данных пользователя, проверяет соответствие логина и пароля.
-
Система отправляет результат проверки пользователю.
-
Получаем результат проверки
Для всех способов аутентификации процесс проверки соответствия одинаковый.
Двухфакторная аутентификация

В некоторых случаях может потребоваться дополнительная мера защиты учётных данных пользователя, и именно для этого вводится механизм двух факторной аутентификации — это когда пользователю необходимо подтвердить подлинность своей личности двумя разными способами. Примером может служить — ввод Email + Пароль, а затем номера телефона и СМС кода.
Упрощённая схема двух факторной аутентификации.

На первом этапе мы вводим логин и пароль, отправляем их системе на проверку — как в обычной аутентификации. Система проверяет логин и пароль, и отправляет ответ (результат проверки) пользователю. Ответ может быть как положительным, так и отрицательным. Если ответ положительный — то пользователь переходит ко второму этапу. В это время ему должно прийти сообщение с кодом подтверждения в виде символов или же ссылки. После ввода кода подтверждения пользователь снова отправляет данные системе на проверку. Если ответ положительный — то пользователь получает доступ к своим данным. Если ответ отрицательный — то пользователь получает возможность повторить попытку ввода, либо процесс аутентификации начинается сначала.
Ошибки аутентификации

Во время проверки логина и пароля могут возникнуть ситуации, когда аутентификация не пройдена и пользователь не получил доступ к своим личным данным.
-
Логин введён неверно
-
Пароль введён неверно
-
Нет соединения с сервером
-
Ошибка проверки данных сервером
-
Превышен лимит ошибочных попыток аутентификации
-
Пользователь ввёл верно свои денные, но он не зарегистрирован
-
Учётная запись пользователя заблокирована администратором
Лимиты ошибочных попыток аутентификации вводятся для усиления безопасности личных данных пользователей. После превышения лимита обычно предлагается восстановить пароль, либо повторить аутентификацию позже. В системах с повышенным уровнем контроля за безопасностью данных пользователя принимаются меры блокировки учётной записи до момента подтверждения личности пользователя (на пример в банковских картах).
Процесс восстановления пароля

В случаях, когда пользователь забыл свой пароль — он может его восстановить при помощи системы восстановления доступа. Для этого пользователю нужно пройти несколько шагов.
-
Ввести логин
-
Подтвердить свою личность (на пример пройти по ссылке в электронном письме от сервиса восстановления пароля или ввести код из СМС)
-
Ввести новый пароль
-
Повторить ввод нового пароля
-
Сохранить новый пароль
После прохождения данных этапов пользователь для входа в систему может использовать свой логин и новый пароль.
В системах с повышенным контролем за безопасностью данных пользователей используется более сложный механизм подтверждения личности пользователя для смены пароля. Примером может служить приход пользователя в банк, чтобы восстановить пин-код к своей карте или личному кабинету в системе банка.
Стоит заметить, что некоторые сервисы не поддерживают восстановление пароля — например кошельки криптовалют. С одной стороны это позволяет обезопасить данные пользователя, с другой это даёт пользователю шанс навсегда потерять доступ к своим данным в системе.
Упрощённое объяснение термина «сессия»
Сессия — это механизм сохранения состояния авторизации пользователя в системе на заданный срок. Сессий одного пользователя может быть много. Примером может служить сессии в социальных сетях — когда вы можете зайти в свой аккаунт социальной сети с нескольких устройств одновременно, без необходимости выходить из учётной записи на другом устройстве.
Для того что бы различать входы с различных устройств — каждой сессии присваивается свой уникальный для каждой авторизации номер (Токен), который хранится в Cookies. Это нужно для того, что бы при выходе (закрытии сессии) с одного из устройств вы не выходили из своей учёной записи во всех остальных устройствах.
Cookies

Наверное вы часто слышали термин Cookies — это маленький фрагмент данных, которые система (сервер) хранит у пользователя. Каждый раз, когда пользователь открывает сайт — серверу отправляются данные Cookies, которые сервер сохранил у пользователя на устройстве. В нашей теме аутентификации — этим небольшим фрагментом будет уникальный номер сессии (Токен) пользователя, если он (пользователь) уже авторизован.
Вы можете проектировать свои интерфейсы как с сохранением сессий пользователей, так и без сохранения.
Заключение
В данной статье мы рассмотрели базовые принципы работы аутентификации в различных системах. Вся эта статья нацелена для того, чтобы помочь дизайнерам интерфейсов понять то — как работает процесс аутентификации, для чего он нужен, каких видов он бывает и что происходит на большинстве этапов во время авторизации, регистрации, восстановления пароля пользователем.
Надеюсь вам было полезно, и хоть немного интересно.
ссылка на оригинал статьи https://habr.com/ru/post/545406/
Добавить комментарий