Приветствую, надеюсь на вашу помощь. Моя система единого входа (SSO) перестала работать на этой неделе. Я думал, что вчера всё исправил (работало, честное слово
Примечание: я посмотрел раздел «Новые пользователи» за вчера и сегодня — новые пользователи появлялись в оба дня (после моего исправления), но теперь снова всё сломано…). К сожалению, внесённые мной обновления сегодня не работают.
Проблема: Пользователи не могут создавать новые учётные записи, а пользователи, вышедшие из системы, не могут войти обратно.
Я заметил, что мой сервер Discourse возвращает ошибки 400 по следующим маршрутам:
403: GET : discourse-url/users/by-external/USER-ID.json?
Примечание: Недавно в документации API я обнаружил, что этот маршрут не существует? (хотя он работал). Похоже, правильный маршрут: https://discourse.example.com/u/by-external/{external_id}.json
404: POST: discourse-url/admin/users/sync_sso?
Знак вопроса ? в конце стоит потому, что в функции, генерирующей URL, у меня есть необязательный параметр. Для этих двух маршрутов все данные отправляются в теле формы или заголовках.
Я использую следующую библиотеку.
Что я обновил (и что, как я думал, исправит проблему):
Во всех своих запросах я передавал Api-Key и Api-Username через параметры запроса (query parameters). В течение последних нескольких месяцев в панели администратора я видел предупреждение о том, что в моих запросах используются устаревшие заголовки. Оно ссылалось на этот пост, и ключевые детали здесь:
Предупреждение об устаревании!
6 апреля 2020 года мы прекратили поддержку всей аутентификации, не основанной на HTTP-заголовках (за исключением некоторых маршрутов RSS, получения почты и ICS). Это означает, что API-запросы, содержащиеapi_keyиapi_usernameв параметрах запроса или в теле HTTP-запроса, скоро перестанут работать. Пожалуйста, ознакомьтесь с примером запроса cURL ниже, чтобы узнать, как обновить свои API-запросы для использования HTTP-заголовков в целях аутентификации.
Я обновил все свои запросы: теперь Api-Key и Api-Username передаются в заголовках, а тип контента установлен как multipart form data.
Если кто-то сможет подсказать, на что обратить внимание при отладке этой проблемы, я буду очень благодарен. Я почти на 100% уверен, что вчера в конце рабочего дня всё работало: я мог входить и выходить из своей учётной записи, а также создавать новые учётные записи.
Пожалуйста, дайте знать, если потребуется дополнительная информация. Спасибо!