Примечание: с точки зрения безопасности такое поведение является желательным, однако мы можем улучшить пользовательский опыт (UX) в случае возникновения этой ситуации у пользователя
Если пользователь зарегистрировал U2F-токен, он не будет работать, если имя хоста сайта изменилось с момента регистрации.
Однако пользователю не предоставляется никакой информации о том, что проблема может быть вызвана изменением имени хоста, поскольку мы не храним эту информацию в Discourse. И если пользователь не понимает, почему это произошло, он запутается.
Возможное улучшение для этого случая может включать на этом экране:
отключение опции «Аутентификация с помощью ключа безопасности»;
вывод сообщения вроде: «У нас в системе зарегистрирован ключ безопасности для этой учётной записи, но он не подходит для имени хоста, к которому вы обращаетесь (www.example.com)».
Важное замечание:
если мы реализуем вышеуказанное, необходимо убедиться, что мы не переназначаем старое имя хоста на новое в таблице UserSecurityKey.
Да, нам нужно добавить здесь немного текста, @sam, чтобы охватить случай с изменением доменного имени. Я думаю, что это в основном обновление текста, например, отказ от ответственности внизу или что-то в этом роде?
Это может оказаться немного сложным, так как, насколько я помню (прошло уже много времени с тех пор, как я работал над этим, поэтому я могу ошибаться), имя хоста хранится внутри открытого ключа в таблице ключей безопасности. Потребуется небольшая доработка, чтобы передать эту проблему в UI: отключить кнопку и отобразить сообщение. Кроме того, это будет показано только в том случае, если все зарегистрированные ключи безопасности имеют неверное имя хоста — если хотя бы один совпадает, пользователь в порядке.
Кроме того, мне также нужно исправить 2fa security key breaks when migrating to custom domain - #6 by balboah. Я назначу эту тему на себя, потому что, думаю, при смене имён хостов нам следует просто отключить все существующие ключи безопасности, так как они фактически становятся бесполезными.
Я часто восстанавливаю базу данных с продакшн-сайта на стейджинг-сайт с другим именем хоста. Было бы здорово, если бы система могла, например, отключать все невалидные ключи и требовать от администраторов их сброса (хотя ответственный пользователь, скорее всего, уже настроил резервные ключи, так что это не очень поможет. ).