HandyCafe Docs
owner it-admin

Вход через OAuth

HandyCafe поддерживает социальный/OAuth-вход для клиентов с использованием Device Authorization Grant (RFC 8628). Этот метод разработан для киосковых и публичных сред, где клиенты не могут безопасно вводить учетные данные на общих ПК.

Поддерживаемые провайдеры

Провайдер Эндпоинт
Google oauth2.googleapis.com
Facebook graph.facebook.com/v21.0
Apple appleid.apple.com
X (Twitter) api.x.com/2/oauth2
Discord discord.com/api/oauth2

Каждый провайдер может быть включен или отключен индивидуально в Настройки > OAuth.

Процесс аутентификации

Процесс авторизации устройства проходит следующие шаги:

  1. Клиент выбирает провайдера - на экране ожидания клиент нажимает кнопку провайдера (например, Google, Discord).
  2. Клиент отправляет запрос на сервер - клиент уведомляет HandyCafe Server о начале OAuth-входа.
  3. Сервер запрашивает код устройства - сервер обращается к эндпоинту авторизации устройства выбранного провайдера и получает код устройства, пользовательский код и URI верификации.
  4. Клиент отображает код - клиент показывает user_code и verification_uri, обычно в виде QR-кода для удобного сканирования.
  5. Клиент аутентифицируется на телефоне - клиент сканирует QR-код личным устройством (телефоном или планшетом) и завершает аутентификацию на сайте провайдера.
  6. Сервер опрашивает токен - сервер периодически запрашивает у провайдера токен. Состояния опроса:
    • Pending - клиент еще не завершил аутентификацию.
    • SlowDown - слишком частый опрос; сервер снижает частоту.
    • Success - аутентификация завершена; токен получен.
    • Expired - код устройства истек до аутентификации.
    • Error - произошла непредвиденная ошибка.
  7. Сервер получает информацию о пользователе - при успехе сервер использует токен для получения профиля клиента от провайдера: provider_uid, email, name и avatar_url.
  8. Администратор одобряет или отклоняет - запрос на вход появляется на странице "Запросы". Администратор или кассир рассматривает и одобряет или отклоняет запрос.
  9. Создание или привязка участника - при одобрении создается новый аккаунт участника или OAuth-профиль привязывается к существующему.
  10. Запуск сессии клиента - клиент получает подтверждение и сессия начинается.

Безопасность

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

Конфигурация

OAuth-провайдеры настраиваются в Настройки > OAuth. Каждый провайдер требует собственных клиентских учетных данных (client ID и client secret), полученных из консоли разработчика провайдера. Включайте только те провайдеры, которые хотите предложить клиентам.