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

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

Нужно реализовать добавление устройств (телевизоров) в аккаунт пользователей, а также авторизацию на самом телевизоре через сайт. Хочу сделать по примеру YouTube: телевизор показывает шестизначный код, а пользователь с мобильного устройства/ПК вводит его для авторизации. Не могу понять, как это технически реализовать. Если складывать коды в таблицу, как определить нужный телевизор при одновременном добавлении двумя пользователями? Или проще сделать наоборот: показывать код на мобильном устройстве, а на ТВ вводить? Но это кажется менее безопасным.
  • Вопрос задан
  • 504 просмотра
Подписаться 2 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 секунд проверяет не стала ли сессия авторизованной или истек срок действия пина
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽