首页 > JavaEE项目规模大了之后想拆分,单点登录有什么成熟方案吗?

JavaEE项目规模大了之后想拆分,单点登录有什么成熟方案吗?

就是那种 xx 管理系统,业务越做越多,子系统之间基本上没有实时数据交互。

现在的情况就是一个 war 包扔到 tomcat 上撑着,想改个 Java 代码中的常量都得打包重新发布然后做一堆冒烟测试还小心翼翼的。不同子系统之间也是各小组分别开发,互相的沟通也有问题。

其实各子系统之间的数据交互和流程交互并不多,只不过用户信息是共享的,不能让用户切换子系统时还要重新登录一次。所以我的想法是,弄个登录服务器存放用户信息和权限信息,其余的子系统分别部署。底层也是共享一个数据库的,如果有什么交互的地方直接写库就行了,最主要的是先解决不同组能分别开发分别部署的问题。

那么,这是个好主意吗?另外,这算不算是个单点登录的需求,系统是 JavaEE , struts2 ,有没有合适的方案能做这个东西的?

现在的登录就是基于 http session ,自己写 filter 实现的。翻过一些帖子,知道有 oauth2 这个方案,但还没有着手调试那些 Java 实现。 spring security 、 shiro 这些东西也看过一点,不清楚是不是可以做这个事情。另外一种方案就是自己去实现 refresh token , access token 那些东西,没有能力研究网络安全机制,拿成熟方案自己实现应该问题不大。

技术选型方面的主要需求就是不要对现有架构改动太大。


推荐使用CAS单点登录,很成熟的一套SSO单点登录方案。

对现有项目的改动只需要在web.xml里面加上一些Filter,在打开项目页面时就会自动跳转到CAS登录页面,登录成功后又会跳转会项目页面。可以让所有项目使用一套登录系统。和一些权限框架例如Spring Security也可以很好的集成。目前在我公司(一个上市互联网公司)大规模使用。

客户端文档:https://wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1


我们专注于做IDaaS解决方案的。最近刚做完一个项目,和你的情况一样。06年开发的一个系统现在要拆分成7个系统,涉及到用户单点登录的实现、用户权限管理、业务系统间跳转的问题。
提供应用系统集成实现单点登录的SDK包,我们提供代码改造样本,系统改造工作量不超过100行代码,只需要对认证模块进行小的改动即可。

【热门文章】
【热门文章】