Это работает для входа пользователя, но передача ключа groups вроде бы ни на что не влияет. Я просмотрел код ManagedAuthenticator и тоже не нашёл ничего, связанного с группами.
Чего-то не хватает или я что-то неправильно понимаю?
@david Как ты думаешь, насколько это сложно для человека, который ещё не писал плагины? Разве это не так просто, как получить по имени группы из JWT, пришедшие из Discourse, и присвоить результат запроса (объекты групп) user.groups? Я немного знаком с плагином (насколько он прост) и, возможно, смогу это сделать.
Также, стоит ли вообще этим заниматься? Если у меня есть на руках JWT, могу ли я аутентифицироваться через OpenID Connect?
Это зависит от того, как вы хотите, чтобы это работало… Скорее всего, вы захотите создавать обычные группы в Discourse, не допуская случайного удаления из них участников с помощью JWT. В нашей нативной системе SSO для Discourse это решается с помощью двух параметров: «add groups» (добавлять группы) и «remove groups» (удалять группы).
В плагине JWT эту логику, вероятно, стоит добавить в функцию after_authenticate аутентификатора. Обязательно вызовите super и верните его ответ, чтобы всё существующее продолжало работать корректно. Пример такого переопределения можно найти здесь.
Плагин discourse-jwt работает. Однако, похоже, что по какой-то причине он предназначен только для работы с алгоритмом HS256. Внести изменения для поддержки других алгоритмов довольно просто.