使用 Next Auth 静默登录具有来自 AWS Cognito 的外部令牌的用户

Using Next Auth to silent log in users with external tokens from AWS Cognito

我们有一个网站,用户可以在其中使用 AWS Cognito 对自己进行身份验证。这已经通过基于他们的示例代码的 Cognito 提供程序使用 Next Auth 来实现。那工作正常。但是,每当新的潜在客户(客户)填写特定表格时,我们都会将该信息发送到外部 API。 API 连接到 AWS 中的同一个 Cognito 客户端和用户池,它创建了一个新用户并执行了一些操作。在此 API 的响应中,我们收到新创建的用户的访问令牌、刷新令牌和身份令牌。这背后的原因是,无论何时创建新的潜在客户,都会自动为他们分配一个用户,我们会在后台让他们登录。这远非理想的解决方案,我知道,但我们的作业不允许重新思考和重写当前设置。

我的问题是我们应该如何实现这样的自定义登录流程。我们想要验证 API 响应中的令牌并使用这些令牌创建会话,就像常规登录流程一样。

我附上了这个简化的图表,试图解释这个过程。参见 link: Login flow chart

对于任何遇到类似问题的人,我们是这样解决的:从外部服务收到 id_token 后,我们对自己的授权进行 router.push(...) (next/router)使用 id_token 回调 API 端点。在我们的例子中,它变成了:

/api/auth/callback/cognito?id_token={ID_TOKEN}