我目前正在尝试在多个基于JVM(Grails,Servlets)的Web应用程序上实现单一登录解决方案,这些Web应用程序当前都部署在同一个servlet容器中(目前是Tomcat,但不希望将我的解决方案仅限于Tomcat).所有Web应用程序共享一个公共数据库
我已经看过使用CAS或其他第三方库创建新的Web服务来处理单点登录的各种选项,但似乎没有一个真正满足业务需求.我当前的实现涉及创建一个新的jar库,它具有基于Spring Security的AuthenticationProviders和Pre-Authentication Filters的通用实现.
在这种方法中,我有多个AuthenticationProviders(当前是Active Directory和Database)供应用程序进行身份验证.验证成功后,将在包含用户的会话表,过期时间和令牌中插入一行.令牌也将作为cookie存储在用户的计算机上,并用于验证它们在预认证过滤器中是否具有当前会话.
在我想要确保我没有创建一个巨大的安全问题之前从未这样做过,我也想知道创建令牌需要什么?此时一个简单的GUID似乎足够了吗?
目前我们正在开发Spring Security 3.0.x,尚未升级到3.1.
提前致谢.
最佳答案
在Spring Security Extensions网站上有可用于KERBEROS,OAuth和SAML的扩展.这是博客条目,提供了一个示例:SpringSource Blog
如果您使用NTLM作为SSO提供程序,请查看jespa-spring项目.
或者你可能想看看Java Open Single Sign-On Project