如何利用Amazon Cognito实现子域名间的会话共享?
能否通过Amazon Cognito实现同主域下子域名的单点登录?
完全可以实现。Amazon Cognito支持同主域(如domain.com)下多子域名应用的单点登录(SSO),核心是通过共享身份验证Cookie和正确配置用户池与应用客户端来达成。
关键配置步骤:
- 配置用户池Cookie域:在Cognito用户池的「应用客户端设置」中,将Cookie的Domain设置为根域名
.domain.com(注意前缀的点)。这会让Cognito生成的身份验证Cookie被app1.domain.com和app2.domain.com共同识别。 - 统一OAuth参数配置:
- 为两个子域名应用分别创建(或复用符合要求的)应用客户端,启用相同的OAuth流(推荐使用Authorization Code Flow以保证安全性)。
- 分别添加两个应用的回调地址到「Allowed Callback URLs」(如
https://app1.domain.com/callback和https://app2.domain.com/callback),同时配置对应的「Allowed Sign-out URLs」。 - 确保「Allowed Origins」包含两个子域名的HTTPS地址。
- 应用端适配:两个应用在发起认证请求时,均指向同一个Cognito用户池的授权端点,并使用各自的客户端ID。用户在
app1.domain.com登录后,Cognito会在.domain.com域下设置安全Cookie,当访问app2.domain.com时,应用会自动检测该Cookie,直接完成令牌获取流程,无需重复登录。
注意事项:
- 所有应用必须使用HTTPS协议,Cognito的安全Cookie仅在HTTPS环境下才能跨子域名正常共享。
- 检查Cookie的
Secure、HttpOnly、SameSite属性配置,平衡安全性与兼容性。
内容的提问来源于stack exchange,提问作者Mohamed Anser Ali
相关产品推荐
相关产品推荐

