Русский
  • Магическая ссылка
  • Без пароля
  • Аутентификация
  • Приглашение

Аутентификация с помощью магической ссылки

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

Ran
Ran
Product & Design

Хватит тратить недели на аутентификацию пользователей
Запускайте безопасные приложения быстрее с Logto. Интегрируйте аутентификацию пользователей за считанные минуты и сосредоточьтесь на вашем основном продукте.
Начать
Product screenshot

Что такое магическая ссылка?

Магическая ссылка — это метод аутентификации без пароля, когда пользователь получает одноразовый URL для входа по электронной почте (или SMS). Клик по ссылке позволяет войти без необходимости ввода пароля.

Вот некоторые ключевые функции безопасности магических ссылок:

  • Одноразовый токен: После клика токен становится недействительным, чтобы предотвратить повторное использование.
  • Истечение срока действия ссылки: Магическая ссылка должна иметь короткий срок действия (например, 10 минут) для дополнительной безопасности.
  • Ограничение скорости: Предотвращайте злоупотребления, ограничивая количество отправляемых магических ссылок в определенный временной интервал.
  • Привязка к устройству/браузеру (по желанию): Ограничьте использование ссылки только оригинальным устройством или IP, чтобы предотвратить перехват.

Состав магической ссылки

Магическая ссылка состоит из:

  • Маршрут URL: Указывает на целевую страницу вашего приложения.
  • Одноразовый токен: Уникальный и одноразовый токен, используемый для аутентификации без пароля.
  • Электронная почта пользователя: Используется для проверки подлинности токена и идентификации пользователя.
  • Дополнительные параметры: По желанию, в зависимости от потребностей вашего приложения.

Например, магическая ссылка может выглядеть так:

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

Поток работы магической ссылки

  1. Пользователь запрашивает магическую ссылку: Пользователь вводит адрес своей электронной почты в вашем приложении.
  2. Генерация одноразового токена: Сервер генерирует токен и отправляет его в виде ссылки по электронной почте.
  3. Пользователь кликает по ссылке: Пользователь кликает по ссылке в электронном письме.
  4. Проверка токена: Сервер проверяет, действителен ли токен.
  5. Пользователь аутентифицирован: Если токен действителен, пользователь входит в систему.

Как реализовать магические ссылки с Logto?

Шаг 1: Запрос одноразового токена

Используйте Management API Logto для создания одноразового токена.

Пример запроса payload:

Шаг 2: Составьте вашу магическую ссылку

После получения одноразового токена вы можете составить магическую ссылку и отправить ее на электронную почту конечного пользователя. В магической ссылке должны быть указаны токен и электронная почта пользователя в качестве параметров и должна быть ссылка на целевую страницу вашего приложения. E.g. https://yourapp.com/landing-page.

Вот простой пример того, как может выглядеть магическая ссылка:

Примечание:

Имена параметров в магической ссылке можно полностью настроить. Вы можете добавить дополнительную информацию в магическую ссылку в зависимости от требований вашего приложения, а также кодировать все параметры URL.

Шаг 3: Активируйте поток аутентификации через Logto SDK

После того как конечный пользователь кликнет по магической ссылке и перейдет в ваше приложение, вы можете извлечь параметры token и email из URL, а затем вызвать функцию signIn() из Logto SDK, чтобы активировать поток аутентификации.

Для получения более подробной информации ознакомьтесь с Logto Docs - Magic Link (One-time Token).

Примеры использования магических ссылок

Магические ссылки могут заменить шаг аутентификации первого фактора, но не могут обойти многофакторную аутентификацию (MFA).

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

  • Незарегистрированная электронная почта: Нажав на магическую ссылку, пользователи перейдут к процессу создания учетной записи, пропуская ввод и проверку электронной почты. Пользователи могут установить пароль, добавить данные профиля (например, полное имя) или настроить MFA в зависимости от ваших настроек регистрации.
  • Зарегистрированная электронная почта: Нажав на магическую ссылку, пользователи обойдут проверку первого шага (например, «электронная почта + пароль» или «электронная почта + код подтверждения»). Пользователь либо сразу войдет в систему, либо ему будет предложено пройти MFA в зависимости от ваших настроек входа.

Logto поддерживает следующие сценарии с магическими ссылками:

  1. Регистрация только по приглашению: для внутренних инструментов или продуктов на этапе тестирования AI вы можете отключить публичную регистрацию и приглашать определенных пользователей по магической ссылке.
  2. Приглашение участника организации: для продуктов SaaS используйте магические ссылки для приглашения новых участников в организацию, чтобы упростить процесс членства.
  3. Вход / Регистрация: отправьте магическую ссылку для входа или регистрации по электронной почте.

В настоящее время не поддерживается:

Дайте нам знать, если вам нужна дополнительная настройка.

Регистрация только по приглашению с магической ссылкой

Для новых продуктов (например, AI-инструментов) в процессе внутреннего тестирования или внутренних инструментов вы можете отключить публичную регистрацию и разрешить доступ к вашему приложению только определенным пользователям. Чтобы реализовать это с помощью Logto:

  1. Перейдите в Консоль > Опыт входа > Вход и регистрация > Расширенные параметры и выключите "Включить регистрацию пользователей", чтобы закрыть публичную регистрацию.

    logto_disable_public_registration.png

  2. Соберите адреса электронной почты пользователей, которых вы хотите пригласить (например, через ваш веб-сайт или по рекомендациям от существующих пользователей).

  3. Создайте и отправьте магическую приглашение, как описано выше (запросите одноразовый токен, составьте магическую ссылку, активируйте аутентификацию через Logto SDK).

    Примечание: Установите время истечения срока действия ссылки на приглашение. Рекомендуется сделать ссылку действительной хотя бы на один день. Используйте следующий запрос для генерации одноразового токена:

  4. Отправьте магическую ссылку на электронную почту пользователя (например, https://yourapp.com/landing-page?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]). Настройте шаблон электронной почты, например:

    email_templates_invitation_only_registration.png

    Когда пользователи нажимают "Принять приглашение", они автоматически регистрируются в вашем сервисе, даже если публичная регистрация отключена. Это называется "Целевое приглашение пользователя".

Приглашение участников организации с магической ссылкой

Для многопользовательских продуктов (например, SaaS-приложений, таких как Slack, GitHub, Vercel) обеспечьте беспрепятственный процесс приглашения участников для управления членством в организации. Используйте магические ссылки для повышения коэффициента конверсии в приглашениях участников.

  1. Следуйте документации Logto для реализации создания организации, контроля доступа на основе ролей в организации и управления организацией: Logto Organizations.

  2. Установите процесс "Пригласить участников" в вашем продукте. Пример:

    invite_organization_member_in_app.png

  3. Следуйте этому руководству, чтобы пригласить участников организации. Примечание: При приглашении участников убедитесь, что в запросе включается:

    • context: jitOrganizationIds для указания, в какую организацию/организации должен вступить пользователь.
    • Установите более долгое время expiresIn (например, 2 дня или 1 неделя), чтобы пользователи имели достаточно времени для принятия приглашения.

    Пример запроса:

  4. Отправьте ссылку на приглашение на электронную почту пользователя (например, https://yourapp.com/landing-page?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]). Настройте шаблон электронной почты, например:

    email_templates_join_organization.png

    Когда пользователи нажимают "Принять приглашение", они автоматически войдут в систему или зарегистрируются и автоматически вступят в организацию.

Обработка конфликтов аккаунтов

Что произойдет, если пользователь уже вошел в систему и кликнет по другой магической ссылке?

Чтобы правильно обрабатывать конфликты аккаунтов, убедитесь в следующем:

  • Избегайте добавления login в "подсказку для входа": не устанавливайте подсказку для входа, включающую login. Если настроено неправильно, Logto автоматически войдет в аккаунт, связанный с токеном магической ссылки, обходя подсказку переключения аккаунта.
  • Сохраняйте существующие токены: При вызове функции signIn() укажите параметр clearTokens: false, чтобы предотвратить очистку существующих токенов. Если эта опция используется, убедитесь, что вы вручную очищаете токены на странице обратного вызова при входе.

После правильной настройки пользовательский опыт будет следующим:

  1. Магическая ссылка для текущего аккаунта: Если пользователь уже вошел в систему и кликнул по магической ссылке для того же аккаунта, Logto проверит одноразовый токен и, если необходимо, зарегистрирует пользователя в указанных организациях.
  2. Магическая ссылка для другого аккаунта: Если пользователь вошел в систему и кликнул по магической ссылке для другого аккаунта, Logto предложит пользователю либо:
    • Продолжить как новый аккаунт: Logto переключается на новый аккаунт после проверки токена.
    • Остаться в текущем аккаунте: Logto пропускает проверку токена и возвращает пользователя к текущему аккаунту.
    magic_link_account_conflicts.png

Обработка страниц ошибок для недействительных магических ссылок

Когда пользователи кликают по недействительной магической ссылке, они будут перенаправлены на страницу ошибки с ясным объяснением проблемы. Ниже приведены возможные сценарии ошибок и их сообщения:

ИмяОписание
token_not_foundАктивный токен не найден по указанной электронной почте и токену.
email_mismatchНесоответствие электронной почты с указанным токеном.
token_expiredСрок действия токена истёк.
token_consumedТокен уже использован.
token_revokedТокен отозван.
cannot_reactivate_tokenНевозможно повторно активировать токен.

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

magic_link_error_pages.png

Заключение

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

Готовы модернизировать вашу IAM с надёжной аутентификацией?