У кого-то есть рабочая конфигурация AWS Cognito с OAuth2, OpenID или SSO?

Я пытаюсь интегрировать Discourse с нашим существующим пулом пользователей Cognito.

У нас нет настроенного IdP или SAML в AWS для SSO, поэтому я не рассматривал этот вариант.

Пробовал плагин OpenID, но Discourse перенаправляет вход на конечную точку /AUTHORIZE в Cognito вместо /LOGIN. Я знаю, что это берётся из конфигурации в .well-known, но не уверен, как это должно работать.

Пробовал плагин OAuth2 — я вижу, что Discourse вызывает конечную точку /TOKEN и получает обратно JWT от Cognito, но затем конечная точка /USERINFO возвращает ошибку, поэтому процесс не проходит дальше этого этапа.

У кого-нибудь есть рабочий конфиг, которым можно поделиться? OAuth2 кажется лучшим путём, но, очевидно, я что-то упускаю.

Как у вас с этим получилось?

У меня такая же потребность.

С уважением,

Тодд

Привет — я пока не получил никаких ответов от кого-либо, и, к сожалению, у меня тоже не было возможности вернуться к этому вопросу.

Для использования AWS Cognito в качестве провайдера идентификации для плагина OpenID Connect

  1. Нажмите кнопку Create a User Pool в веб-консоли AWS Cognito.
  2. Нажмите Review Defaults, чтобы использовать настройки по умолчанию.
    2a. Перед созданием пула убедитесь, что вы нажали Add an App Client.
    2b. Создайте App Client: задайте ему имя и снимите все флажки, кроме Enable refresh token based authentication (ALLOW_REFRESH_TOKEN_AUTH).


3. Нажмите Create pool.
4. Теперь в разделе General Settings в левом меню выберите App Client и запишите значения для App client id и App client secret.
5. Далее в разделе App integration в левом меню выберите Domain name. Введите здесь поддомен. Имя, указанное здесь, будет доменом, на который будут перенаправляться пользователи при входе.

6. В левом верхнем углу консоли AWS Cognito нажмите Federated Identities — этот пункт найти немного сложно.
federated-identities
7. После этого нажмите Create new identity pool.
8. Задайте имя для пула идентификации.
8b. В разделе Authentication providers используйте User Pool ID из ранее созданного пула пользователей и App client id из ранее созданного клиента приложения.


9. Нажмите Create Pool и разрешите консоли создать роли IAM для использования с новым пулом идентификации.
10. На этом этапе у вас есть практически всё необходимое для настройки экземпляра Discourse с правильными параметрами сайта, при условии, что плагин уже установлен.

openid connect enabled: включите эту опцию.
openid connect client id: используйте App Client Id, полученный на предыдущих этапах.
openid connect client secret: используйте App Client Secret, полученный на предыдущих этапах.
openid connect discovery document: ссылка на документ обнаружения (discovery document) имеет следующий формат. Формат для userPoolId можно увидеть на скриншоте в шаге 8b:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/openid-configuration

Чтобы проверить правильность формата URL, просто вставьте его в адресную строку браузера. Вы должны получить корректный JSON-ответ, содержащий endpoint авторизации, издателя (issuer) и другую информацию.

openid connect authorize scope: openid email


Другие полезные материалы