Проблемы с настройкой входа без пароля в AWS Cognito

Продолжение обсуждения из темы Невозможно изменить тему в Discourse — ничего не работает:

Привет, Карлос! Добро пожаловать в наше сообщество. :hugs:

[quote=“carlossouza, post:1, topic:366617”]
Я потратил целый день на настройку входа без пароля через AWS Cognito.

Это просто не работает.

После того как я сдался и решил, что буду просить пользователей создавать логины и пароли через стандартную систему Discourse, я перешёл к тому, что должно быть самой простой задачей: изменению темы.
[/quote]\n
Ух, это неприятно. Я создам здесь новую тему, если ты готов попробовать снова вместе с нами. Лично я не очень хорошо знаком с AWS Cognito. Можешь рассказать, что именно ты пробовал и на каком этапе застрял? Как клиент с размещённым решением, ты также можешь обратиться за персональной поддержкой по адресу team@discourse.org.

Согласно нашему ИИ-боту, настроить это возможно с помощью плагина OpenID Connect.

Настройка AWS Cognito для Discourse ИИ

tobiaseigen:

настроить aws cognito

ForumHelperBot:

Думаю...Пользователь спрашивает о настройке AWS Cognito. AWS Cognito — это сервис аутентификации от Amazon Web Services, который помогает добавить регистрацию, вход и контроль доступа для ваших веб- и мобильных приложений.

Давайте поищем обсуждения или руководства по интеграции AWS Cognito с Discourse, чтобы предоставить наиболее релевантную информацию.

Поиск

Найдено 54 results по запросу 'aws cognito integration discourse'

Думаю...Я проанализирую результаты поиска, чтобы предоставить информацию о настройке интеграции AWS Cognito с Discourse.

Согласно результатам поиска, существует несколько тем, обсуждающих интеграцию AWS Cognito с Discourse. Основной подход, по-видимому, заключается в использовании плагина аутентификации OpenID Connect для Discourse. Давайте подытожим ключевую информацию:

  1. Есть несколько тем, где пользователи успешно интегрировали AWS Cognito с Discourse с помощью плагина OpenID Connect.

  2. Некоторые релевантные темы включают:

    • “У кого-нибудь есть рабочая конфигурация AWS Cognito с oauth2, openid или sso?”
    • “Авто-вход с помощью плагина OpenId Connect и AWS Cognito”
    • “Пользовательский поток входа: AWS Cognito SSO (через вход без пароля) — это возможно?”
    • “Поддержка OpenID Connect в самостоятельно размещённом экземпляре Discourse”
  3. В этих обсуждениях упоминается официальный плагин OpenID Connect для Discourse: GitHub - discourse/discourse-openid-connect: Allows an OpenID Connect provider to be used as an authentication provider for Discourse · GitHub

  4. Один из пользователей отметил, что смог включить SSO через AWS Cognito, следуя инструкциям в этих темах:

    • “Плагин аутентификации OpenID Connect”
    • “У кого-нибудь есть рабочая конфигурация AWS Cognito с oauth2, openid или sso?”

Давайте прочитаем наиболее релевантную тему, чтобы собрать более конкретные инструкции.

Настройка AWS Cognito с Discourse

Согласно результатам поиска, существует несколько успешных реализаций интеграции AWS Cognito с Discourse с помощью плагина OpenID Connect. Вот как это можно настроить:

Шаг 1: Установка плагина OpenID Connect

Плагин Discourse OpenID Connect (OIDC) позволяет использовать AWS Cognito как провайдера аутентификации для Discourse.

Чтобы установить плагин, добавьте его в файл app.yml:

- git clone https://github.com/discourse/discourse-openid-connect.git

Шаг 2: Настройка AWS Cognito

  1. Создайте пул пользователей в AWS Cognito.
  2. Настройте клиента приложения в вашем пуле пользователей.
  3. Настройте URL обратного вызова как https://your-discourse-site.com/auth/oidc/callback.
  4. Запишите домен Cognito, ID клиента и секрет клиента.

Шаг 3: Настройка плагина OpenID Connect в Discourse

Перейдите в Администрирование > Настройки > Плагины > openid connect и установите следующие параметры:

  • openid connect enabled: true
  • openid connect discovery document: https://{cognito-domain}.auth.{region}.amazoncognito.com/{user-pool-id}/.well-known/openid-configuration
  • openid connect client id: ID клиента вашего приложения Cognito
  • openid connect client secret: Секрет клиента вашего приложения Cognito
  • openid connect authorize scope: openid email profile
  • openid connect token url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/token
  • openid connect authorize url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/authorize
  • openid connect user json url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/userInfo

Дополнительные параметры настройки

  • Чтобы включить автоматический вход, добавьте ?prompt=none в параметр openid connect authorize url.
  • Вы можете настроить текст кнопки входа с помощью параметра openid connect button title.

Устранение неполадок

Если возникнут проблемы:

  • Убедитесь, что URL обратного вызова правильно указан как в Cognito, так и в Discourse.
  • Проверьте правильность ID клиента и секрета.
  • Убедитесь, что ваш пул пользователей Cognito правильно настроен для возврата необходимых атрибутов пользователя.

Для более подробных примеров реализации ознакомьтесь с этим обсуждением, где пользователи поделились своими успешными конфигурациями.

Хотите ли вы получить более конкретную информацию о какой-либо части этого процесса настройки?

Огромное спасибо @tobiaseigen!

Я запустил сообщество без AWS Cognito… моя система использует стандартную систему аутентификации Discourse… это немного костыльное решение, потому что, когда мои пользователи становятся платными клиентами, вебхук от Stripe создаёт нового пользователя Discourse через API, генерирует временный пароль и отправляет учётные данные им по электронной почте.

Я хотел использовать AWS Cognito, потому что мой основной платный сервис — это курс, размещённый на Gitbook, защищённый системой аутентификации без пароля AWS Cognito. Повторное использование этой системы было бы идеальным для моих пользователей. Но теперь уже слишком поздно :slight_smile:

В любом случае, я думаю, что выполнил все шаги, которые вы описали… или, возможно, что-то упустил… всё работало отлично, за исключением того факта, что после ввода email и кода аутентификации Discourse перенаправлял обратно на /login, а не на / (главную страницу). При проверке пользователей на странице администратора Discourse я увидел, что AWS Cognito никогда не создаёт пользователей Discourse.

В любом случае, спасибо!