В SSO-дискурсе возникла ошибка в рамках одной сессии

Привет! Я использую SSO для входа в WordPress через Discourse. Я использовал плагин Discourse для WordPress. Сначала всё работало гладко.

Но когда я нахожусь в той же сессии (не выходя из системы) и пытаюсь перейти по ссылке администратора /wp-admin/, меня не перенаправляет на панель управления, и в форме входа отображается следующая ошибка:

Истёк Nonce

Что-то не так с сессией или файлами cookie. Это сбивает пользователей с толку, так как я использую вход через Google.

Думаю, проблема, с которой вы столкнулись, вызвана кэшированием объектов на вашем сервере. Попробуйте добавить в файл functions.php вашей темы WordPress следующий код, чтобы проверить, решит ли это проблему:

add_filter('wpdc_sso_client_query', 'wpdc_custom_sso_client_query' );
function wpdc_custom_sso_client_query() {
    return wp_generate_password( 12, false );
}

Подробнее об этом можно узнать здесь: Wordpress SSO Expired nonce - #15 by simon.

С этим кодом всё ещё не получается.
Discourse не дружит с Cloudflare, но я использую Cloudflare для защиты своего сайта. Это нормально?

Всё работает, если удалить куки и войти снова, но это запутывает.

Процесс останавливается по этой ссылке:

/wp-login.php?discourse_sso_error=expired_nonce

Я думаю, это не Cloudflare, потому что это правило, которое я настроил для тестирования обхода:

Проведённое мной тестирование показало, что не все ссылки вашего плагина не работают.

Эта ссылка работает нормально:

/?discourse_sso=7cygqwtc8aaz&redirect_to=https%3A%2F%2Fmyweb.net%2Fmy-account

Это означает, что ваш параметр “7” в SSO корректен

Я попытался перенаправить свою ссылку на этот параметр для перенаправления пользователя.
Вы можете проверить и устранить проблему, настроив параметры ссылок.

Эта ссылка на тексте «Текст внешнего входа» работает корректно:

All-Options-‹-Working24-—-working24-net

Вы в итоге нашли решение? У меня та же проблема.

Попробуйте использовать решение, предложенное здесь: Wordpress SSO Expired nonce - #15 by simon.

Спасибо, я применил это, но проблема сохраняется.

@Golaxo Вы тоже используете Cloudflare?

Если да, попробуйте полностью отключить Cloudflare и проверьте, сохраняется ли проблема.

Спасибо, приятель. После кучи ругани я нашел проблему: плагин Paid Membership Pro вызвал конфликт. Мне всё ещё нужно разобраться, как ограничить контент в WordPress для пользователей, пришедших через Discourse SSO, но хотя бы теперь я вижу, в чём проблема :slight_smile: