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

Существует ли такая авторизация смартфоном по qr-коду?

Есть ли такая схема авторизации на сайтах смартфоном(подключенным к интернету)?:
Пользователь вводит в адресную строку «адрес сайта».
На странице сайта в уголке рисуется qr-код для авторизации.
Пользователь направляет телефон на qr-код, нажимает на пиктограмму установленного приложения «Loginer»(допустим так называется).
Нажимает на любую внутреннюю ссылку сайта(или само обновляется) и уже видит свои приватные данные.

Если нет, то чем вот такая схема не проканает? :

Пользователь на телефон устанавливает приложение «Loginer».
В это приложение пользователь вводит пароль.
Из пароля вычисляется hash-сумма(назовем ее «парольная hash-сумма») и сохраняется в надежное место памяти телефона.

Регистрация:
Пользователь вводит в адресную строку «адрес сайта».
Нажимает кнопку «Зарегистрироваться».
Ему показывается поле ввода своего уникального ника/id(назовем «id пользователя»).
Пользователь вводит уникальный «id пользователя» и отправляет его серверу сайта.
Сервер сайта проверяет уникальность «id пользователя» и генерирует «qr-код регистрации», содержащий связку «id пользователя» и «адрес сайта».
Пользователю показывается страница содержащая «qr-код регистрации», содержащий «id пользователя»(нового) и «адрес сайта».
Пользователь достает свой телефон и запускает приложение «Loginer».
Приложение «Loginer» фотографирует «qr-код регистрации», из него получает «id пользователя» и «адрес сайта».
Связка «id пользователя» и «адрес сайта» сохраняется в надежное место телефона.
Приложение «Loginer» конкатенирует «id пользователя» с «парольная hash-сумма» и из полученной строки вычисляет hash-сумму(назовем ее «id hash-сумма»).
Приложение «Loginer» отправляет связку «id пользователя» и «id hash-сумма» на «адрес сайта».
Сервер сайта сохраняет полученную связку («id пользователя» и «id hash-сумма») в базу данных.

Вход:
Пользователь заходит на «адрес сайта».
Сервер генерирует «qr-код входа», содержащий новый «id сеанса» и «адрес сайта». И просит записать «id сеанса» в куки.
Пользователь приложением «Loginer» фотографирует «qr-код входа», получает «id сеанса» и «адрес сайта». По «адрес сайта» в памяти телефона ищется соответствующий «id пользователя» и генерируется «id hash-сумма». Связка «id hash-сумма» и «id сеанса» конкатенируются и из получившейся строки вычисляется hash-сумма, назовем ее «hash-сумма сеанса».
Связка из «hash-сумма сеанса», «id сеанса» и «id пользователя» отправляется на «адрес сайта».
Сервер проверяет, является ли пришедший от телефона «id сеанса» свежим.
Сервер сайта ищет в своей базе «id hash-сумму», соответствующую «id пользователя».
Сервер конкатенирует «id hash-сумму» и «id сеанса», из полученной строки вычисляется hash-сумма, которая сравнивается с пришедшей от телефона «hash-сумма сеанса». Если они совпадают, то за «id сеанса» закрепляется «id пользователя».
При следующем обращении клиента с установленным в куки «id сеанса», сервер проверяет, какому «id пользователя» он соответствует и начинает отдавать приватные данные.

P.S. Вероятно я не умею искать, но по таким фразам как «авторизация смартфоном» выдается жуткий шлак кроме очень хорошего способа авторизации с отправлением сообщений(неким способом) на смартфон.
  • Вопрос задан
  • 6292 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
xaker1
@xaker1
Подобная схема авторизации используется на сайте liqpay.com.
Там в QR коде закодирован уникальный случайный 16-значный числовой код (вида login_XXXXXXXXXXXXXXXX).

В приложении под Android можно включить режим сканирования QR кода. Как только приложение находит нужный QR код — спрашивает, действительно ли мы хотим авторизоваться. Если да — идет с смарфона запрос на сервер (естественно приложение авторизовано в liqpay) с данным кодом (подтверждается авторизация).

js скрипт каждые 15 секунд делает запрос на сервер по URL /inapi?code=login_XXXXXXXXXXXXXXXX&action=qrcode_ajax.
В ответ получает результат авторизации. Если прошла — создается сессия, идет обновление страницы и мы попадаем в закрытую часть.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
numitus
@numitus
Такой способ не встречал, но идея годная. Только можно заменить все это непонятное описание алгоритма таким. В qr коде некий код. Логинер заходит на сайт, авторизируется и вводит этот код. Окно автоматически перезагружается и вы попадаете на свою страницу. Патентуйте пока не позндо)
Ответ написан
@Efsi
Поищите про qr-авторизацию у Gmail. Они делали что-то подобное.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Я бы сделал проще))))
1. Логин — храним в кукисах или вводим вручную.
2. Логин ушел на сервер — сервер сгенерил ID-сессии и ждет…
3. Со смарта отправляется login, timestamp и hash=md5(md5(pass)+timestamp)
(md5(pass) хранится на сервере и на смарте)
4. Сервер проверяет, что hash и hash из параметров по формуле равны и если TIMEOUT не вышел (10 секунд, к примеру, на обновление ожидания через AJAX в браузере), то возвращает список активных сессий для этого пользователя.

Далее — можно делать все что угодно (если сессий больше 1, к примеру, то единомоментно зашли сразу с нескольких компьютеров с одинаковым паролем!!!):
По сессиям на смарте можно: посмотреть IP, время инициализации, браузер, разрешение экрана, ip2town, и т.д.
и войти в один клик на смарте с нужными правами, настройками, сразу на нужную вкладку и т.д.
Можно защитить вход в сессию PIN-кодом или убить все сессии на сервере принудительно…
Тут уж на что фантазии хватит)
Ответ написан
la0
@la0
Похожая схема: www.enum.ru/default.aspx (QRкод просто позволяет не вводить значения руками)
При этом смартфону вообще не нужен доступ в интернет.
Ответ написан
Ваш ответ на вопрос

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

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