只要mydomain.com
不在公共后缀列表(http://publicsuffix.org/list/)中,a.mydomain.com
就可以放一个域cookie.mydomain.com
(注意放cookie只能降一级:a.b.mydomain.com
不能放.mydomain.com
cookie)
cookie 将被发送到b.mydomain.com
(以及*.mydomain.com
and mydomain.com
) 并且可以用作打开会话的令牌。所以一定要控制整个 *.myDomain.com 子域并使其 httpOnly 和安全 (https)
Response.SetCookie(new HttpCookie("myCookieName", "myCookieValue") { HttpOnly = true, Domain = ".myDomain.com", Secure=true });
Atlassian Crowd 解决方案http://www.atlassian.com/software/crowd/overview的某些部分基于这种 cookie 机制
所以你可能:
- 在 a.domain.com 上启用表单身份验证
- 成功登录后构建一个
myToken
cookie,其值包含 userId 和散列 userId,散列键由 a.myDomain.com 和 b.myDomain.com 已知
- 使用域 .myDomain.com 设置 cookie
- 当用户进入 b.myDomain.com 时,检查 cookie 服务器端(在 java 中)是否匹配 userId 和散列值
- 如果 cookie 正确,则为用户 userId 打开会话
请注意,您将无法访问 cookie 客户端(因此没有 js cookie 处理,除非它是服务器端 js,例如 nodejs)