Статья для дизайнеров интерфейсов, которые желают понять то, как работают процессы регистрации, авторизации, восстановления пароля, применяемые в различных системах. Если вы разработчик/дизайнер, и нашли ошибку/неточность - то дайте мне знать (я с радостью доработаю статью). Сегодня я хотел бы рассказать о том, как проходит аутентификация в приложениях самых различных платформ - начиная от мобильных приложений, заканчивая консольными утилитами. Аутентификация - это процесс, при котором пользователь подтверждает подлинность своей личности в какой-либо системе. Система предоставляет личные данные только своему владельцу. Механизм аутентификации на базовом уровне довольно прост - вам нужно ввести данные в виде логина и пароля. Проверить данные на совпадение, и если данные совпали между собой - то вы являетесь подлинным обладателем учётной записи. Учётная запись - это хранимый в системе набор данных о пользователе. К учётной записи как правило имеет доступ лишь один пользователь - её владелец. Пример: В кино, когда шпиона просят назвать кодовую фразу для подтверждения своей личности - то по факту осуществляется процесс аутентификации пользователя. Если кодовая фраза (пароль) верный - то шпиону доверяют и предоставляют закрытые от остальных данные. (Утрированно) Так как наши данные при регистрации в каком либо сервисе хранятся в базе данных - то к процессу аутентификации применяются базовые принципы работы с базами данных (далее БД) - это чтение, запись, обновление и удаление данных. При этом, во время каждого из действий с БД проверяется возможность совершения этих действий пользователем. Регистрация (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) Сканеры внешности (лицо, отпечаток пальца) Токен - это уникальный (как правило длинный) набор символов для доступа к учётной записи, который может храниться на устройстве (телефон, компьютер, флешка, чип карта). Токен обычно не вводят вручную в поле ввода пароля, а предоставляют системе целый файл с токеном, для проверки подлинности. Не все виды аутентификации пользователя требуют интернет соединения для проверки соответствия логина и пароля пользователя. На пример: вы можете без подключения к интернету разблокировать свой телефон, компьютер, сейф с кодовым замком или открыть дверь в подъезд. Соединение нужно для тех типов аутентификации, в которых личные данные пользователей хранятся на удалённом сервере. Это как доступ к банковской ячейке, открыть которую вы можете только придя в банк, подтвердив свою личность и в присутствии охраны. Описанные выше варианты логинов и паролей могут комбинироваться между собой для проверки подлинности пользователя. На пример: Email Номер телефона Уникальное имя Пароль Пароль Пароль Токен Токен Токен PIN код PIN код PIN код Внешность Внешность Внешность Код в Email сообщении SMS код  В таблице каждая колонка - это варианты логина, а строки - это доступные варианты паролей. Процесс проверки соответствия логина и пароля проходит в несколько этапов. Вводим логин Вводим пароль Отправляем данные на проверку Система получает данные, которые ввёл пользователь, ищет в своей базе данных пользователя, проверяет соответствие логина и пароля. Система отправляет результат проверки пользователю. Получаем результат проверки Для всех способов аутентификации процесс проверки соответствия одинаковый. В некоторых случаях может потребоваться дополнительная мера защиты учётных данных пользователя, и именно для этого вводится механизм двух факторной аутентификации - это когда пользователю необходимо подтвердить подлинность своей личности двумя разными способами. Примером может служить - ввод Email + Пароль, а затем номера телефона и СМС кода. На первом этапе мы вводим логин и пароль, отправляем их системе на проверку - как в обычной аутентификации. Система проверяет логин и пароль, и отправляет ответ (результат проверки) пользователю. Ответ может быть как положительным, так и отрицательным. Если ответ положительный - то пользователь переходит ко второму этапу. В это время ему должно прийти сообщение с кодом подтверждения в виде символов или же ссылки. После ввода кода подтверждения пользователь снова отправляет данные системе на проверку. Если ответ положительный - то пользователь получает доступ к своим данным. Если ответ отрицательный - то пользователь получает возможность повторить попытку ввода, либо процесс аутентификации начинается сначала. Во время проверки логина и пароля могут возникнуть ситуации, когда аутентификация не пройдена и пользователь не получил доступ к своим личным данным. Логин введён неверно Пароль введён неверно Нет соединения с сервером Ошибка проверки данных сервером Превышен лимит ошибочных попыток аутентификации Пользователь ввёл верно свои денные, но он не зарегистрирован Учётная запись пользователя заблокирована администратором Лимиты ошибочных попыток аутентификации вводятся для усиления безопасности личных данных пользователей. После превышения лимита обычно предлагается восстановить пароль, либо повторить аутентификацию позже. В системах с повышенным уровнем контроля за безопасностью данных пользователя принимаются меры блокировки учётной записи до момента подтверждения личности пользователя (на пример в банковских картах). В случаях, когда пользователь забыл свой пароль - он может его восстановить при помощи системы восстановления доступа. Для этого пользователю нужно пройти несколько шагов. Ввести логин Подтвердить свою личность (на пример пройти по ссылке в электронном письме от сервиса восстановления пароля или ввести код из СМС) Ввести новый пароль Повторить ввод нового пароля Сохранить новый пароль После прохождения данных этапов пользователь для входа в систему может использовать свой логин и новый пароль. В системах с повышенным контролем за безопасностью данных пользователей используется более сложный механизм подтверждения личности пользователя для смены пароля. Примером может служить приход пользователя в банк, чтобы восстановить пин-код к своей карте или личному кабинету в системе банка. Стоит заметить, что некоторые сервисы не поддерживают восстановление пароля - например кошельки криптовалют. С одной стороны это позволяет обезопасить данные пользователя, с другой это даёт пользователю шанс навсегда потерять доступ к своим данным в системе. Сессия - это механизм сохранения состояния авторизации пользователя в системе на заданный срок. Сессий одного пользователя может быть много. Примером может служить сессии в социальных сетях - когда вы можете зайти в свой аккаунт социальной сети с нескольких устройств одновременно, без необходимости выходить из учётной записи на другом устройстве. Для того что бы различать входы с различных устройств - каждой сессии присваивается свой уникальный для каждой авторизации номер (Токен), который хранится в Cookies. Это нужно для того, что бы при выходе (закрытии сессии) с одного из устройств вы не выходили из своей учёной записи во всех остальных устройствах. Наверное вы часто слышали термин Cookies - это маленький фрагмент данных, которые система (сервер) хранит у пользователя. Каждый раз, когда пользователь открывает сайт - серверу отправляются данные Cookies, которые сервер сохранил у пользователя на устройстве. В нашей теме аутентификации - этим небольшим фрагментом будет уникальный номер сессии (Токен) пользователя, если он (пользователь) уже авторизован. Вы можете проектировать свои интерфейсы как с сохранением сессий пользователей, так и без сохранения. В данной статье мы рассмотрели базовые принципы работы аутентификации в различных системах. Вся эта статья нацелена для того, чтобы помочь дизайнерам интерфейсов понять то - как работает процесс аутентификации, для чего он нужен, каких видов он бывает и что происходит на большинстве этапов во время авторизации, регистрации, восстановления пароля пользователем. Надеюсь вам было полезно, и хоть немного интересно. Дизайнер интерфейсов