首页 > 解决方案 > 使用 cookie 或回调或任何 aws cognito 端点设置/通信会话到不同域的 AWS Cognito 替代方案

问题描述

目前,我正在开发一个应用程序,我们希望在其中提供单点登录体验,但让我将您放在上下文中:

我们为同一个 Cognito 池创建了两个不同的 Cognito 客户端,它们都配置为允许用户登录到两个不同的应用程序:

好吧,事情是当用户使用托管 UI 登录到第一个应用程序时,我注意到 Cognito 服务器创建了一个名为“Cognito”的 cookie,如图所示: cookie set by the auth server

然后,当用户尝试访问另一个应用程序 appb.mydomain.com 时,该应用程序不会显示托管的 UI,而是自动进入该应用程序,而无需再次进入所有登录过程,这是可能的,因为我提到的 cookie(当我删除该 cookie 时,会要求用户使用其凭据再次登录)。

所以,这很好,因为用户不需要再次完成所有登录过程。但我的情况如下:我想在 mydomain.com 中使用我自己的自定义表单并使用 Cognito SDK 创建一个登录页面。我已经有后端工作,也是前端。后端可以对用户进行身份验证以获取 JWT 令牌(IDtoken、刷新令牌等),如下图所示: 当我对用户进行身份验证时获得的令牌

但此时我无法通过有效会话将用户重定向到 appb.mydomain.com,我的意思是,我有 JWT 令牌,并且我尝试做与托管 UI 客户端正在做的事情相同的事情,即正在以某种方式设置包含 JWT 会话的 cookie。但我不知道如何让应用程序 appb.mydomain.com 能够检测到这个 cookie。但最重要的问题是我真的不知道如何构建一个有效的 cookie(如 Cognito 的)以被 mydomain.auth.eu-west-1.amazoncognito.com 检测到(这个域由两个托管 UI 客户端共享)。

我不知道这种方法是否可行,或者是否有另一种方法可以通过回调将 JWT 令牌发送到身份验证服务器以将用户重定向到 appb.mydomain.com 而无需再次进入所有登录过程或其他什么像那样。

您对如何实施这种 SSO 体验有什么建议吗?我在后端使用 .Net Core。

标签: sessioncookiessingle-sign-onsubdomainamazon-cognito

解决方案


推荐阅读