首页 > 代码库 > SSO是一种技术?

SSO是一种技术?

SSO不是一种技术,只是一种思想

下面是在一个论坛里看到的提问:

在这里打个比方,一个大型网站,它有自己的blog系统,也有自己的bbs,也有自己的书签功能等等。
在开发的时候,肯定不是建立一个Web项目然后完成后部署的。我想应该是先做blog,又做bbs等,然后这些作为独立的程序跑在不同服务器上。
这里,就有个问题我想不明白,难道一定要做单点登录才能对这些应用程序进行统一的身份认证?没有其他办法?
如果登录后,每个系统都需要session里面的数据,又怎么进行传递?
还有,这个程序之间如果想通讯,又是利用的什么方式?

============================解决方案:==================================

其实最简单的办法就是使用客户端cookie,没有cookie的就只能让他重新再输入一次。

1.有独立的登陆验证服务器:

   1.1.接收A系统传输的加密后的(username和password等数据组成的)字符串,

         登陆服务器验证成功后返回一个加密后(包含username、password、登录验证的有效time)的数据字符串;

   1.2.A系统接收到登陆服务器的加密字符串后写到用户Cookie (第一次Cookie为空就在request中放一份),并且设置Cookie的maxAge=-1

        以后每次带过来的Cookie,都从中获得加密字符串发送到登录服务器进行验证;

   1.3.登陆服务器接收到自己加密的字符串,先判断有效time(相当于检查session过期),验证通过后再重新生成一个加密串(新的time);

另: 借鉴 京东,淘宝:

      当第一次登录成功后,可异步通过 jsonp方式,跨域设置相关业务站点(顶级域名)的凭证信息保存在Cookie中,子域共享该Cookie。

      跳转的时候,通过浏览器自动获取到Cookie。

2.登陆服务器和A系统的通信方式很多:

         同步或异步,同步有RMI、hessian、Webservice;

         异步有JMS等。

         SOA是一个大的根本解决方案。

3.Cookie确实有安全问题:

    比如坏人copy了别人的Cookie文件。

4.如果觉得cookie不安全,使用小applet都可以。

 

SSO是一种技术?