Spring 子域安全认证

Spring security authentication in subdomains

我有一个使用通配符子域的网站。子域可以是任何内容,但子域始终存在(默认情况下为 "www")。我想在登录时在每个子域中进行身份验证。

当我在 abc.example.com 中进行身份验证时,JSESSIONID cookie 放置在 abc.example.com 中。如果我去 xyz.example.com 然后它找不到 cookie,所以我注销了。我也用了记住我的功能,应该也可以。

到目前为止我尝试的是:

  1. 将 cookie 放置在父域中(无法找到方法)
  2. 复制子域的 cookie(不知道如何)

有人能告诉我正确的方向吗?

我不得不将记住我的 cookie 放在顶级域中。通过设置 cookie 域和禁用请求缓存来完成:

String rememberMeCookieDomain = ".mydomain.com"
http.rememberMe().rememberMeCookieDomain(remembermeCookieDomain).rememberMeCookieName(REMEMBERME_COOKIE_NAME).tokenRepository(tokenRepository()).tokenValiditySeconds(4 * SECONDS_IN_WEEK);

结尾的“.”在 cookie 域中是必需的,以允许子域访问顶级 cookie。如果您使用 tomcat,则必须打开旧版 cookie 处理器才能正常工作: