Вхід через OAuth
HandyCafe підтримує соціальний/OAuth-вхід для клієнтів за допомогою Device Authorization Grant (RFC 8628). Цей процес розроблений для кіоскових та публічних середовищ, де клієнти не можуть безпечно вводити облікові дані на спільних ПК.
Підтримувані провайдери
| Провайдер | Кінцева точка |
|---|---|
| oauth2.googleapis.com | |
| graph.facebook.com/v21.0 | |
| Apple | appleid.apple.com |
| X (Twitter) | api.x.com/2/oauth2 |
| Discord | discord.com/api/oauth2 |
Кожен провайдер можна індивідуально увімкнути або вимкнути в Налаштування > OAuth.
Процес автентифікації
Процес авторизації пристрою проходить через такі кроки:
- Клієнт обирає провайдера -- на екрані очікування клієнт натискає кнопку провайдера (наприклад, Google, Discord).
- Клієнт надсилає запит серверу -- клієнт повідомляє HandyCafe Server про ініціювання OAuth-входу.
- Сервер запитує код пристрою -- сервер звертається до кінцевої точки авторизації пристрою обраного провайдера та отримує код пристрою, код користувача та URI перевірки.
- Клієнт відображає код -- клієнт показує
user_codeтаverification_uriклієнту, зазвичай у вигляді QR-коду для зручного сканування. - Клієнт автентифікується на телефоні -- клієнт сканує QR-код своїм персональним пристроєм (телефон або планшет) та завершує автентифікацію на сайті провайдера.
- Сервер опитує на наявність токена -- сервер періодично перевіряє отримання токена у провайдера. Стани опитування:
- Очікування -- клієнт ще не завершив автентифікацію.
- Уповільнення -- занадто часте опитування; сервер зменшує частоту.
- Успіх -- автентифікація завершена; токен отримано.
- Прострочено -- код пристрою закінчився до автентифікації.
- Помилка -- виникла непередбачена помилка.
- Сервер отримує дані користувача -- при успіху сервер використовує токен для отримання профілю клієнта від провайдера, включаючи
provider_uid,email,nameтаavatar_url. - Адміністратор схвалює або відхиляє -- запит на вхід з'являється на сторінці Запитів. Адміністратор або касир переглядає та схвалює або відхиляє запит.
- Учасник створюється або прив'язується -- при схваленні створюється новий обліковий запис учасника або OAuth-ідентифікатор прив'язується до існуючого учасника.
- Сеанс клієнта починається -- клієнт отримує підтвердження і сеанс починається.
Безпека
- Облікові дані не торкаються спільного ПК. Клієнти автентифікуються лише на особистих пристроях. На клієнтській машині не вводяться паролі або токени.
- Контроль адміністратора. Кожен запит на OAuth-вхід має бути схвалений адміністратором або касиром перед початком сеансу, запобігаючи несанкціонованому доступу.
- Налаштовувана вимога кредиту. Параметр "дозволити вхід без кредиту" можна увімкнути або вимкнути, контролюючи, чи потрібен позитивний баланс для входу через OAuth.
Конфігурація
Провайдери OAuth налаштовуються в Налаштування > OAuth. Кожен провайдер потребує власних облікових даних клієнта (client ID та client secret), отриманих з консолі розробника провайдера. Увімкніть лише провайдерів, яких ви хочете запропонувати клієнтам.