使用 Grails 和 Spring Security 进行跨域身份验证

Posted

技术标签:

【中文标题】使用 Grails 和 Spring Security 进行跨域身份验证【英文标题】:Cross domain authentication with grails and spring security 【发布时间】:2011-11-20 12:34:32 【问题描述】:

我正在开发将在两个域名下运行的 grails 应用程序,两个单独的 Web 服务器使用相同的数据库服务器,因此所有数据都是共享的,并且对于两个域都是相同的。该应用程序在两个域上都是相同的,只有 Config.groovy 和 css 文件中的 serverURL 设置不同。我正在使用 spring-security 插件进行身份验证。

简而言之,我需要的是当用户登录查看 domain1.com/account 时,用户应该能够转到 domain2.com/account 并且仍然登录以查看相同的信息。

所有登录都不是通过 twitter/facebook 登录或 OpenID 功能,而是使用 spring-security 在我的应用程序中创建帐户。

我认为不可能使用 cookie 进行这项工作,因为它们是特定于域的,并且无法通过网络应用程序访问跨域 cookie,如果我错了,请纠正我。

我正在考虑尝试的解决方案之一是确保两个 Web 服务器之间存在会话复制,例如使用 tomcat 集群并强制在域交换机上重写 URL,以便会话由另一台服务器定位。但是,此解决方案是我的最后一个选择,因为如果访问者在 domain1.com 进行身份验证后决定键入 domain2.com,而不是单击 URL 重写链接,则会话信息将丢失。

有什么想法、建议吗?谢谢

【问题讨论】:

【参考方案1】:

一种选择是使用某种单点登录技术,例如CAS。甚至还有一个用于 CAS here 的 grails/spring 安全插件。

【讨论】:

谢谢,这不是我想要的。

以上是关于使用 Grails 和 Spring Security 进行跨域身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Grails spring-security-core 插件安装永远不会完成

Groovy:使用 Grails 和 Spring 安全核心插件时出现意外令牌

Grails 3.0 和 Spring Security

Grails - SSL 和 Spring 安全核心

使用 Grails 3 和 Spring Security REST 配置 CORS

在带有 CAS 和 LDAP 的 Grails 中使用 Spring Security