session - 使用 cookie 或回调或任何 aws cognito 端点设置/通信会话到不同域的 AWS Cognito 替代方案
问题描述
目前,我正在开发一个应用程序,我们希望在其中提供单点登录体验,但让我将您放在上下文中:
我们为同一个 Cognito 池创建了两个不同的 Cognito 客户端,它们都配置为允许用户登录到两个不同的应用程序:
- 应用 A:mydomain.com
- 应用 B:appb.mydomain.com
好吧,事情是当用户使用托管 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。
解决方案
推荐阅读
- c# - 如何在Web Api C#中将字符串作为参数传递
- ssl - 尝试在 C-Panel 中安装免费 SSL(使用 https://zerossl.com/)后出现 404 错误
- php - ZipArchive - 生成的存档文件有问题
- google-cloud-automl - 如何将 AutoML 中训练的模型导出到保存的模型或冻结图?
- ajax - 在ajax数据中传递django变量
- javascript - 通过 W3C Web Payments API 剥离应用程序费用
- mapping - 如何在视图中使用所需的更改列表映射 Perforce:映射?
- vb.net - 检查元素是否为范围,然后将其与另一个范围进行比较
- mysql - MySql 中与 only_full_group_by 相关的错误
- java - 建议将哪个 android 类用于永久后台进程?