Авторизация в мобильном приложении на iOS или Android

# Просто о разработке
Ноябрь 2021 г
SimbirSoftMobile

Оригинал статьи размещен по ссылке.

Авторизация — это процесс подтверждения прав на совершение определенных действий. Обычно она используется в приложениях, где нужно ограничить доступ к данным: например, личным перепискам, банковским реквизитам, документам и т.д.

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

К примеру, создавать презентации можно с помощью приложений Microsoft PowerPoint или Canva, при этом вход в аккаунт требуется только в последнем. Это объясняется спецификой Canva — онлайн-доступ к своим работам без привязки к конкретному устройству.

Способы авторизации в мобильном приложении

Механизм авторизации зависит от ряда факторов, в том числе от требуемых сроков разработки и от того, с каких устройств пользователи будут заходить в приложение. Ниже перечислим наиболее распространенные способы идентификации.

Номер телефона + SMS-код. Способ удобен тем, что пользователю не надо запоминать пароль для входа. Хотя боты научились обходить и такую авторизацию с помощью специальных сервисов и могут исказить маркетинговые показатели, сделать это все равно сложнее, чем с логином или почтой, например.

Желательно предусмотреть автоподстановку кода из SMS:

  • iOS: через настройку textContentType у поля ввода (подробнее тут);
  • Android: через SmsRetriever, также можно получить с устройства номер телефона и предложить пользователю для быстрого ввода.

Email + пароль. Этот простой способ авторизации существует давно, при его реализации можно воспользоваться готовыми решениями для backend-части. Для того чтобы пользователям не нужно было запоминать свои пароли, предусмотрите автоподстановку. Например, на iOS можно использовать механизм аналогично пункту выше, на Android — механизм autofill. Очень часто при таком варианте авторизации используется одна пара «Email – пароль» на все случаи жизни, а это небезопасно.

Логин + пароль. Похож на способ «Email + пароль», но менее удобен из-за необходимости запоминать и пароль, и логин. Возможны и другие затруднения, например, для использования того или иного распространенного имени или фамилии в качестве логина, скорее всего, к ним придется добавлять дополнительные символы.

Email + код. Этот способ, как правило, не очень удобен пользователям, поскольку требует доступа к почте. Однако, он достаточной безопасный, поскольку позволяет отказаться от постоянного пароля. Кроме того, если сервис представлен в веб- и мобильном приложении (например, корпоративный мессенджер), то для входа в аккаунт на компьютере сотрудникам не понадобится телефон. Для упрощения авторизации можно с помощью механизма deep linking направить пользователя на нужный экран в почтовом клиенте.

Уникальный код. Для данного способа нужно продумать, насколько критична потеря кода и как часто он меняется. Например, на предприятии можно использовать QR-код для автоматической фиксации смены. Если сотрудник потеряет его, то другой человек просто не сможет воспользоваться им по назначению.

Социальные сети. Для пользователя преимущества этого способа в том, что можно не заполнять повторно данные, которые уже указаны в профиле. Определите, будете ли вы реализовывать привязку аккаунтов разных социальных сетей друг к другу в личном кабинете. Она нужна для того, чтобы человек мог авторизоваться как один пользователь и через Facebook, и через ВК, например. В iOS такое приложение также должно поддерживать механизм Sign In With Apple, а в Google — Google Sign-In. Иначе ревьюеры этих систем могут не разрешить публикацию сервиса в их магазинах.

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

PIN-код. Чаще всего используется на старых телефонах, где нет биометрии.

Sign In With Apple / Google Sign-In. В этом случае можно использовать данные аккаунта для входа и дальнейшей работы в сервисе, чтобы сэкономить время пользователя: от него требуется только Touch ID или код-пароль. Способ подходит для тех случаев, когда важно сохранить прогресс или цифровые покупки дополнений: например, в игре. При потере устройства или его замене можно восстановить привязанные приложения.

Google Account Manager. Дополнительный механизм к авторизации позволяет реализовать единый вход при установке нескольких приложений одного производителя. К примеру, если у вас есть два приложения для покупки авиабилетов и бронирования отеля, пользователю будет достаточно авторизоваться в одном из них.

Что ещё нужно учесть

  • Определите, как будут связаны авторизация и регистрация. Самый удобный сценарий для пользователя — не задумываться о том, что из этого ему необходимо. Допустим, в приложении мы реализовали способ «Номер телефона + SMS-код» и изначально даем возможность ввести номер телефона для входа. Если его нет в базе данных, система предложит ему ознакомиться с пользовательским соглашением и политикой конфиденциальности, зарегистрирует и вышлет SMS-код для подтверждения.
  • Продумайте периодичность автопродления токена авторизации и что произойдет по истечении сессии. Если пользователь давно не активен, необязательно возвращать его на экран входа. Иногда достаточно заблокировать доступ к части функционала, оставив пользователя на текущем экране: это актуально для магазинов, например. Для выхода из авторизованной зоны будет действовать тот же механизм.

Заключение

При разработке приложения мы рекомендуем продумать, какие функции требуют авторизации, а какие — нет. При этом в зависимости от особенностей проекта важно учитывать такие факторы, как простота и стоимость реализации, безопасность, удобство для пользователя.

Больше о наших решениях в мобильной разработке читайте в нашем портфолио.