Задать вопрос

Как реализовать авторизацию на ТВ по 6 значному коду?

Нужно реализовать добавление устройств (телевизоров) в аккаунт пользователей, а также авторизацию на самом телевизоре через сайт. Хочу сделать по примеру YouTube: телевизор показывает шестизначный код, а пользователь с мобильного устройства/ПК вводит его для авторизации. Не могу понять, как это технически реализовать. Если складывать коды в таблицу, как определить нужный телевизор при одновременном добавлении двумя пользователями? Или проще сделать наоборот: показывать код на мобильном устройстве, а на ТВ вводить? Но это кажется менее безопасным.
  • Вопрос задан
  • 415 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 1
Или проще сделать наоборот: показывать код на мобильном устройстве, а на ТВ вводить?

Для пользователя проще вводить что-либо на телефоне, а не на телевизоре.

В общем-то такой способ входа не только на телевизорах и yt практикуется. Такое есть ещё у Microsoft и Github при использовании oauth, например. Ещё видел такое у samsung на телевизорах/мониторах и у nintendo на свиче

Смысл такой:
1. Клиент инициирует процесс аутентификации запросом к серверу аутентификации и просит, чтобы аутентификация происходила на другом клиенте. (при этом передаётся clientid / client secret просто чтобы понять, что за приложение этот запрос инициировало).

2. Сервер генерирует какой-то уникальный идентификатор для этого запроса с некоторым временем жизни (обычно не больше 30 минут). И передаёт его клиенту в ответе на запрос.

3. Клиент показывает пользователю:
1) qr-код с ссылкой для аутентификации, где уже зашит этот id
2) ссылку в виде текста
3) этот id, если вдруг его придётся вводить руками

4. Пользователь переходит в итоге по ссылке и опционально вводит этот id. Дальше идёт обычная oauth аутентификация, только без коллбэка (в конце, вместо коллбэка просто страничка аля "всё готово, страницу можно закрыть")

5. Параллельно с этим клиент в фоне опрашивает сервер аутентификации о том, прошла ли аутентификация (просто периодические запросы раз в n секунд, long polling, sse, websocket - не важно). В один прекрасный момент сервер сообщит, что аутентификация прошла и передаст твои обычные токены (обычно пару access/refresh)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
со стороны бакенда (PHP) у Вас просто две сессии.
А 6 значный код просто способ убедиться, что обе сессии принадлежат одному и тому же пользователю.

сессия телевизора без юзерИд, но у нее есть коротко живущий пин. (можно еще в нее сохранить модель телевизора)
а в авторизованной сесии, ты можешь запросить ввод пина.
и если такой не протухший пин есть, то показать страницу
Вы действительно хотите привязать телевизор (ip адрес,название модели) к своей учетной записи ?

При положительном ответе в сессию для телевизора дописываешь юзерИД

Страница с пином на телевизоре крутит ожидание и раз 15-30 секунд проверяет не стала ли сессия авторизованной или истек срок действия пина
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы