У меня возникла проблема, похоже, связанная с SSO, а именно невозможность войти на определённый форум Discourse только при попытке входа с ПК. В противном случае я могу свободно получать доступ к форуму, например, через веб-браузер Android или мобильное приложение.
После нескольких дней устранения неполадок с обеих сторон мы пришли к выводу, что проблема заключается в серии перенаправлений, происходящих между hubitat → portal.hubitat → discourse/session/sso_login?___ → обратно в hubitat, что указывает на SSO-идентификатор, который, возможно, истёк во время моего двухмесячного отсутствия на праздниках.
Есть ли способ, чтобы я, пользователь, мог сбросить свои учётные данные SSO?
Или есть набор шагов, которые я могу передать модератору форума, чтобы он мог сделать то же самое для моей учётной записи со своей стороны?
Мы перепробовали всё остальное (другие браузеры, очистка кеша, удаление куки, блокировка сторонних элементов, режим инкогнито и т. д.), но безрезультатно.
Да, спасибо, и извините, что выгляжу как нуб, написав в этой старой теме, лол. Это один из тех моментов, когда «я в отчаянии, несмотря на 50+ лет опыта в IT».
Не могу не думать, что проблема кроется в этом упрямом файле cookie, возможно, он завершает сессию еще до её начала? СКРИНШОТ
(Пока не могу публиковать изображения, поэтому временно использую ссылку на изображение в качестве заполнителя)
Примечание: Сделано через Chrome > Inspect > Network > Cookies
Не знаю. Но стоит проверить время на ваших серверах (или, возможно, на ПК — или это касается всех ПК и всех пользователей?). Если на одном из них время не совпадает, это могло бы объяснить ситуацию (хотя я не уверен).
Другие вещи, которые стоит проверить: всё ли работает по HTTPS и действительны ли сертификаты.
Пока я пробовал только на одном ПК (Windows 10), но теперь попробую на других. Проблема затрагивала других участников форума в прошлом, но лишь временно, и сейчас жалуюсь только я. (Я сам не являюсь владельцем сайта или администратором.)
Спасибо за дельные предложения, которые оказались среди уже проверенных мною пунктов:
Куки
Кэширование
Смена браузера(ов)
Подмена User Agent
Настройки Same-site / CORS
Включён режим HTTPS только
Сертификаты
Блокировка сторонних куки
NTP/Время/Летнее время
К сожалению, администратор сайта (сообщество Discourse) Hubitat отсутствует более 4 дней из-за выставки CES '23, но обещал проверить настройки SSO по возвращении. Сообщу о результатах.
ОБНОВЛЕНИЕ: Пытаясь дополнительно прояснить предполагаемые различия в поведении между настольными и мобильными платформами, я удалил приложение «Hubitat» (которое представляет собой не что иное, как улучшенную закладку и фронтенд браузера) на своём устройстве Android, а затем попытался получить доступ к сайту через браузер Chrome. Появилось то же самое сообщение об ошибке. Войти по-прежнему не удаётся. При обновлении страницы входа отображается:
“ОШИБКА ВХОДА
Время ожидания входа истекло, пожалуйста, попробуйте войти снова.”
Я предполагаю, что приложение «сохраняло» какой-то ключ(и) авторизации, полученный до моего отпуска, и я хотел исключить этот фактор.
Теперь я полностью убеждён, что это проблема на стороне сервера, на уровне учётной записи пользователя, а не проблема на стороне клиента, связанная с устройством, платформой или браузером. Возможно, это даже известная проблема фреймворка Discourse с известным решением (?), поэтому, пока не придёт помощь, мне нужно заняться поиском в Google.
Подскажите, сталкивался ли кто-то ещё на сайте с такой же проблемой?
Если администраторы сайта ещё не сделали этого, они могли бы включить verbose_discourse_connect_logging. Некоторые подробности об отладке проблем DiscourseConnect с помощью этого параметра можно найти здесь: Отладка и устранение распространённых проблем DiscourseConnect. Хотя, возможно, эта тема не покрывает вашу конкретную проблему.
Полное сообщение об ошибке, которое отображается в логах для этого случая, будет выглядеть примерно так: Nonce неверен, был сгенерирован в другой сессии браузера или истёк. Возможные причины этого:
nonce, передаваемый из приложения в Discourse при попытке входа, не совпадает с nonce, изначально отправленным из Discourse в приложение
nonce был сгенерирован в другой сессии, чем та, из которой вы выполняете вход. Это произойдёт, если приложение делает фоновый запрос для получения nonce от Discourse, вместо того чтобы генерировать его через перенаправление браузера
пользователь ждёт более 10 минут (время истечения nonce) для завершения входа
Скорее всего, вы столкнулись с первой проблемой из этого списка.
В ироничном повороте событий вчера Google объявила о доступности своего VPN-сервиса в рамках подписки One, которой я пользуюсь.
После установки VPN в Windows и его включения я внезапно смог продолжить вход, о котором упоминалось выше. Никаких сбоев.
Возможно, я никогда не узнаю точный механизм, стоящий за этим, но помечаю тему как “РЕШЕНО” в надежде, что кто-то, оказавшийся в подобной ситуации в будущем, сможет извлечь из этого пользу.