У нас есть точка доступа, использующая метод аутентификации по SMS. Пользователь выбирает нашу сеть WiFi Hotspot и перенаправляется на нашу страницу входа.
На iOS и Android активируется всплывающее окно Captive Portal, показывающее нашу страницу входа. Мы просим пользователей заполнить форму и указать свой номер телефона. Когда они нажимают «Отправить», мы отправляем им SMS с кодом подтверждения.
Окно входа в систему (размещенное на нашем сервере) меняется на новую страницу, на которой отображается поле для ввода кода подтверждения. Пока все хорошо... Если пользователь видит «всплывающее окно с уведомлением» для SMS на своем экране поверх закрытого окна, он может увидеть код, ввести его в указанное поле и аутентифицироваться.
Но если у него нет настроенного SMS-уведомления, ему нужно зайти в свое приложение для SMS и найти код. Теперь единственный способ сделать это — закрыть всплывающее окно Captive, но тогда он отключится от нашей точки доступа. Если он снова подключается, ему нужно снова заполнить форму и получить новое SMS, но он сталкивается с той же проблемой.
Теперь все это время пользователь не аутентифицирован, поэтому в iOS в привязном окне в правом верхнем углу отображается «Отмена». Я видел этот же метод на других горячих точках, но в первом окне Captive элемент управления, отображаемый в правом верхнем углу, «Готово». Насколько я знаю, разница в том, что элемент управления «Готово» отображается, когда пользователь аутентифицирован, и «Отмена», пока он еще не аутентифицирован.
Есть ли способ «обмануть» CNA, чтобы он «думал», что у пользователя есть доступ в Интернет, и отображал «Готово», чтобы при закрытии Captive-окна устройство оставалось подключенным к нашей точке доступа?
Мы думаем о какой-то «двухэтапной» аутентификации, например, временной (чтобы получить «Готово»), а затем «настоящей» после ввода кода подтверждения.
Другой способ может состоять в том, чтобы использовать какой-то скрипт (например, трюк «Успех» на iOS), чтобы обмануть CNA, заставив его думать, что есть доступ в Интернет. Но где и как применить «Фокус успеха»? На некоторых HTML-страницах роутера? Или где-то в коде нашей страницы входа?