Плагин Oauth2-basic и PKCE

Всем привет,

Я новичок в плагине oauth2-basic и, прочитав документацию и исходный код, не смог найти ответ на свой вопрос.

  • Поддерживает ли плагин oauth2-basic PKCE?
  • Если да, как его включить?
  • Если нет, как я могу изменить код плагина oauth2-basic для использования PKCE?

На странице README репозитория omniauth на GitHub указано, что я должен иметь возможность установить опцию pkce в значение true в своей стратегии omniauth. Однако я попытался внести это изменение в код плагина oauth2-basic, но код проверки (code challenge) не отправляется на мой authorize_url. Есть какие-либо предложения?

Заранее спасибо

Поднимаю этот вопрос, так как сообщество, которому я помогаю, запрашивает поддержку PKCE.

До того, как меня об этом спросили, я не встречал информации об этом, но, ознакомившись с документацией, вижу, что основной причиной внедрения PKCE являются нативные приложения и SPA:

Нативные приложения

  • Не могут безопасно хранить Client Secret. Декомпиляция приложения раскроет Client Secret, который привязан к приложению и одинаков для всех пользователей и устройств.
  • Могут использовать пользовательские URL-схемы для перехвата редиректов (например, MyApp://), что потенциально позволяет вредоносным приложениям получать Authorization Code от вашего Authorization Server.

Одностраничные приложения (SPA)

  • Не могут безопасно хранить Client Secret, так как их исходный код полностью доступен в браузере.

Ни один из этих случаев не применим к данной ситуации: секрет хранится на сервере Discourse.

Animated GIF