Я хочу настроить единый вход (SSO) с использованием GitHub OAuth. Когда пользователь входит на мой сайт через GitHub, он должен также автоматически авторизоваться в Discourse. Комментарии Discourse встроены на сайт.
Как мне это реализовать?
Я хочу настроить единый вход (SSO) с использованием GitHub OAuth. Когда пользователь входит на мой сайт через GitHub, он должен также автоматически авторизоваться в Discourse. Комментарии Discourse встроены на сайт.
Как мне это реализовать?
Для подключения OAuth2 к вашему собственному сайту можно использовать этот плагин: Discourse OAuth2 Basic
Функция «Вход через GitHub» уже встроена в Discourse, а инструкции по настройке вы найдете здесь: Configure GitHub login for Discourse
Я всё ещё запутался.
Если это было неясно, у меня есть:
Веб-сайт с OAuth от Github.
Discourse с OAuth от Github.
Ни один из них не имеет других методов входа.
Когда пользователь входит в мой веб-сайт, он должен автоматически войти и в Discourse.
Чего мне не хватает, так это связи между ними. Как мне авторизовать пользователя в Discourse, когда он проходит аутентификацию через OAuth от Github на моём веб-сайте?
Когда кто-то входит на ваш веб-сайт, любое взаимодействие происходит только между GitHub и вашим сайтом.
То есть:
Ваш сайт обращается к GitHub, чтобы проверить, существует ли пользователь в их базе данных.
GitHub отвечает «да» (или «нет») и возвращает данные пользователя или токен аутентификации, как запрошено вашим сайтом.
Теперь пользователь входит в ваш сайт.
В этой схеме нет никакого взаимодействия с Discourse. То, что вам нужно здесь, — это способ сообщить Discourse, что данный пользователь только что вошел и ему также необходимо войти в Discourse.
Вам нужен способ добавить вход в Discourse в очередь вместе с входом на ваш сайт, чтобы Discourse знал, когда пользователь вошел или вышел.
Auth0 справляется с этим довольно хорошо из коробки.
Другой способ — использовать Discourse в качестве вашего SSO-сервера.
Спасибо за ответы!
Я понял, что используемый мной плагин аутентификации работает через OAuth и выдаёт JWT. Думаю, что discourse-jwt мне подойдёт.