Какие есть схемы аутентификации, не требующие ввода пароля на разных устройствах?

Для мелкого и несерьёзного проекта выходного дня хочу добавить что-то типа форума / ленты постов-с-комментами.

Вместо полноценной регистрации пользователей с подтверждением email'а или телефона, OAuth2 через соц.сети-гуглы с MFA, хочу первобытно-примитивное нечто с минимумом действий и требований от пользователя.

Задача просто узнавать пользователя при последующих визитах, давать ему возможность комментировать от своего никнейма. Что-то подобное реализовано в телеграмном блог-сервисе telegra.ph — вроде там просто генерится UUID, который сохраняется в куках. Когда даже впервые открываешь сайт, сразу можно писать контент.

Тут всё хорошо, кроме захода одного пользователя с разных устройств: с компа и с мобилки. Как их максимально просто связать?

Может, добавить одноразовый код – на авторизованном устройстве можно его получить, записать на бумажку (например сгенерить для юзера 5 случайных словарных слов, сохранить в БД) – и на неавторизованной мобилке ввести – тогда мобилка тоже авторизуется, а код «сгорит». В следующий раз будет новый.

Наверное, есть какие-то элегантные решения, максимально удобные для непродвинутых пользователей?
  • Вопрос задан
  • 492 просмотра
Пригласить эксперта
Ответы на вопрос 4
Adamos
@Adamos
Простая математика позволяет создать токен, в котором зашифрованы ID пользователя и хэш от того, чем вы готовы его проверить (пароль, личные данные, ID последнего поста...). Показываете любому пользователю по запросу его токен - указав его, он сможет залогиниться на любом другом устройстве. А будет он его выписывать на бумажку или отправлять себе на мобилу по почте - это уже его трудности.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Была такая техника под названием трипкод.

Можно попробовать.
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Почта все же нужна для идентификации.

Просите у пользователя почту и высылаете на эту самую почту ссылку вида:
https://yousite.ru/?authcode=sdksfkjdfsdjksd
Где authcode - это зашифрованный JSON с почтой юзера и текущей датой.

Когда кто-то переходит по такой ссылке, расшифровываете JSON обратно и авторизуете юзера под той почтой, что указана внутри JSON. Дата внутри нужна, если вы вдруг захотите, чтобы ссылка сгорала спустя неделю (допустим).

Из плюсов этой схемы то, что вам не нужна база данных для хранения пользователей и их паролей. Все данные хранятся в ссылке, которая шифруется только по вам известному вам алгоритму и только вы можете ее расшифровать.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Для мелкого проекта выходного дня можно сделать авторизацию по принципу Неуловимого Джо.
У меня больше 10 лет работает несколько таких проектов, где авторизовываться не требуется - достаточно написать любое имя. Обычно нормальным людям не приходит в голову заниматься такими шутками как имперсонация, и всё прекрасно работает без каких-бы то ни было конфликтов или нареканий.

Если же аудитория потенциально конфликтная, которая попытается использовать отсутствие идентификации пользователей в корыстных целях, то надо не маяться дурью, изобретая какие-то хитровыдуманные схемы, а использовать любой стандартный механизм.
Ответ написан
Ваш ответ на вопрос

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

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