在设置 AWS Cognito 无密码登录时遇到问题

继续讨论 在 Discourse 中无法更改主题 — 什么都不起作用

嗨 Carlos!欢迎来到我们的社区。 :hugs:

哎呀,真烦人。我在这里开一个新话题,如果你愿意和我们一起再试一次。我个人不熟悉 AWS Cognito。你能告诉我们你尝试了什么以及在哪里卡住了吗?作为托管客户,你也可以联系 team@discourse.org 获取个性化支持。

根据我们的 AI 机器人,使用 OpenID Connect 插件应该可以设置。

AWS Cognito 设置 Discourse AI

tobiaseigen:

设置 aws cognito

ForumHelperBot:

思考...用户正在询问设置 AWS Cognito。AWS Cognito 是亚马逊网络服务提供的一项身份验证服务,可帮助您为 Web 和移动应用程序添加用户注册、登录和访问控制。

让我搜索有关 AWS Cognito 与 Discourse 集成的任何讨论或指南,以提供最相关的信息。

搜索

找到 54 个关于“aws cognito integration discourse”的 结果

思考...我将分析搜索结果,以提供有关将 AWS Cognito 与 Discourse 集成的信息。

根据搜索结果,有几个主题讨论了 AWS Cognito 与 Discourse 的集成。主要方法似乎是使用 Discourse 的 OpenID Connect 身份验证插件。让我总结一下关键信息:

  1. 有多个主题讨论了用户使用 OpenID Connect 插件成功将 AWS Cognito 与 Discourse 集成。

  2. 一些相关主题包括:

    • “有人有使用 ouath2、openid 或 sso 的有效 AWS Cognito 配置吗?”
    • “使用 OpenId Connect 插件和 AWS Cognito 自动登录”
    • “自定义登录流程:AWS Cognito SSO(通过无密码登录)- 可能吗?”
    • “自托管 Discourse 实例中的 OpenID Connect 支持”
  3. Discourse 的官方 OpenID Connect 插件在这些讨论中被提及:GitHub - discourse/discourse-openid-connect: Allows an OpenID Connect provider to be used as an authentication provider for Discourse

  4. 一位用户提到,他们通过遵循这些主题中的步骤成功启用了通过 AWS Cognito 的 SSO:

    • “OpenID Connect 身份验证插件”
    • “有人有使用 ouath2、openid 或 sso 的有效 AWS Cognito 配置吗?”

让我阅读最相关的主题以获取更具体的说明。

使用 Discourse 设置 AWS Cognito

根据搜索结果,使用 OpenID Connect 插件成功将 AWS Cognito 与 Discourse 集成的案例有好几个。以下是设置方法:

步骤 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:在 Discourse 中配置 OpenID Connect 插件

转到管理 > 设置 > 插件 > 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:您的 Cognito 应用程序客户端 ID
  • 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

其他配置选项

  • 要启用自动登录,请将 openid connect authorize url 设置为包含 ?prompt=none
  • 您可以使用 openid connect button title 自定义登录按钮文本

故障排除

如果您遇到问题:

  • 确保您的回调 URL 在 Cognito 和 Discourse 中都已正确设置
  • 验证您的客户端 ID 和密钥是否正确
  • 检查您的 Cognito 用户池是否已正确配置以返回所需的​​用户属性

有关更详细的实施示例,请查看 此讨论,其中用户分享了他们成功的配置。

您想了解此设置过程的任何部分的更具体信息吗?

2 个赞

非常感谢你,@tobiaseigen

我在没有使用AWS Cognito的情况下启动了社区…我的系统正在使用默认的Discourse验证系统…这有点hack,因为,每当我的用户成为付费客户时,Stripe上的一个webhook会使用API创建一个新的Discourse用户,生成一个临时密码,并通过电子邮件将凭据发送给他们。

我原本想使用AWS Cognito,因为我的主要付费服务是在Gitbook上托管的课程,使用AWS Cognito的无密码验证系统进行保护。为我的用户重用这个系统本来是理想的。但现在太晚了:微笑:

无论如何,我认为我已经按照你描述的所有步骤操作了……或者也许我遗漏了什么……一切都运行得完美无缺,除了在输入邮箱和验证码后,Discourse会重定向回/login而不是/(首页)。在Discourse管理员页面检查用户时,我发现AWS Cognito从未创建过Discourse用户。

无论如何,还是感谢!

1 个赞