Discourse OAuth2 Basic

У меня наконец получилось настроить интеграцию с Authentik OAuth2, однако возникли некоторые сложности с настройкой oauth2 user json url. Я использовал эндпоинт user_info Authentik (/application/o/userinfo/), но не знал, как сопоставить поля. Для тех, кто ищет информацию о настройке Discourse с OAuth2 от Authentik, вот краткое резюме:

  • Путь к ID пользователя: preferred_username
  • Путь к имени пользователя: preferred_username
  • Путь к имени: name
  • Путь к электронной почте: email
  • Путь к подтверждению электронной почты: email_verified
  • Аватар: пусто.

У меня возникли следующие проблемы:

  1. Сначала я забыл добавить завершающий слэш в URL JSON https://DOMAIN/application/o/userinfo/. Из-за этого запрос информации о пользователе (ссылка на исходный код) возвращал HTTP-код 301, что приводило к сбою входа. Не знаю, обязателен ли завершающий слэш по спецификации, но, возможно, стоит правильно обрабатывать код 301.
  2. Отладка этого процесса оказалась непростой. Настройка oauth2 debug auth оказалась спасением, но… Logster обрезает отладочный лог до того, как выводит содержательные данные ответа. Мне пришлось вручную изменить строку лога в контейнере на:
    log("user_json_response: #{user_json_response.status} #{user_json_response.headers} #{user_json_response.body}")
    
    Возможно, эту строку лога стоит обновить? Думаю, это поможет другим пользователям разобраться с путями атрибутов JSON.
4 лайка