Чтобы смартфоном щёлкнул и готово, без вебкам челленджа, всё по HTTP.
Согласование секрета:
- управляющей утилитой генерим, показываем на экране тем же самым QR
 - приложением фоткаем, сохраняем на смартфоне секрет в хранилище, при желании навешиваем биометрию
 
Flow:
- генерим payload, шифруем общим секретом, отправляем на сервер, показываем QR с id
 - приложением фоткаем QR, по id забираем с сервера payload, расшифровываем, показываем на экране, предлагаем aprove/decline и отправляем ответ
 - чекаем сервер на предмет ответа
 
Или сложно и не нужно?



