自定义登录流程:AWS Cognito SSO(通过无密码登录)- 可能吗?

我按照以下步骤成功通过 AWS Cognito 启用了 SSO:

  1. Discourse OpenID Connect (OIDC)
  2. Anyone have a working AWS Cognito configuration w/ ouath2, openid or sso?

不过,我正在尝试寻找方法,在 Discourse 中启用与我们移动应用和 Web 应用相同的认证流程。该流程是一种自定义的无密码登录认证方式(用户输入邮箱,然后接收验证码)。

预期是 SSO 能够通过这种无密码认证流程实现,而不是使用邮箱/密码方式,因为用户在我们的主要应用中并不使用密码。

请问有什么建议可以启用此功能吗?或者这是否可行?

谢谢。

1 个赞

除非我漏掉了什么,否则这应该能行。只需让他们前往获取链接的页面,之后他们应该就能登录 Discourse 了。这样不行吗?还是您希望 Discourse 自动将他们引导至请求链接的页面?

你好,Jay,

感谢你的回复。

为了澄清一下:

我们应用(非 Discourse)的登录流程是无密码的:用户输入邮箱 → 在邮件中收到一个 6 位验证码 → 输入验证码 → 完成登录。

为实现这一流程,我们使用了 Lambda 触发器来定义/创建并验证认证挑战。此外,用户界面是自定义的(即并非由 AWS Amplify 提供)。

我们希望 Discourse 的登录流程也保持一致。我尝试为 Discourse 使用相同的 Cognito 应用客户端配置,但出现了以下错误页面:

(Cognito 在此错误方面的网络调用信息帮助不大。)

作为对此的后续,如果有人感兴趣:

我们基本上需要设置一个中间 OAuth 服务器来处理令牌,灵感来自这篇帖子:
https://medium.com/@scott_84836/adding-aws-cognito-authentication-to-discourse-using-oauth2-basic-f20209ba6162

我们的后端使用 Flask/Python,因此最终使用了:python-oauth2 · PyPI

简而言之:无法使用任何默认方法通过 Cognito 实现无密码设置,必须自行搭建轻量级 OAuth。

2 个赞