1.实现SSO的机理是什么?
2.需要一个跨服务器单点登陆的例子。

解决方案 »

  1.   

    第一个问题:
    http://www.dlog.cn/html/diary/showlog.vm?sid=1564&log_id=6789
    第二个问题:
    http://topic.csdn.net/t/20061011/13/5074722.html希望对你有帮助~~
      

  2.   

    、概念:SSO的一种偏向技术的说法:用户只需登陆一次,就可使用多个SSO enable的应用系统。(1)、单一的登陆点。理想的情况是用户通过任何应用系统都能进行SSO,这对于基于Web的系统是可行的。这种单一的登陆点在整个系统的设计中是唯一认证用户的地方,由登陆点将SSO token(针对不同的C/S,B/S应用可能还需要传递用户名,口令)传递给应用系统,应用系统利用SSO token来进行用户已认证的验证。我们将这个单一的登陆点称为SSO Entry。(2)、SSO enable意味着对应用系统的修改不可避免。并不是任何系统都能够使用SSO,只有那些符合SSO规范,使用SSO API的应用系统才具有SSO的功能。简单地说就是要修改已有的应用系统,屏蔽已有的应用系统的用户认证模块,使用系统提供的SSO API来验证用户,以及对用户的操作进行授权。(3)、需要统一的认证,权限信息库。通常,认证与授权管理模块以一种应用专有的方式实现,系统的授权模型、认证,授权信息存贮结构与访问控制逻辑与应用的业务逻辑之间耦合紧密。这种设计与实现方式的缺点是显而易见的:由于认证、授权模块与应用逻辑之间的紧耦合使得认证、授权模块很难进行扩展与维护;认证、授权模块的设计与编码需要很大的工作量,而且很难在不同的应用系统之间共享与重用。这也是越来越多企业应用需要SSO的原因之一。SSO要求有统一的认证,权限存放库。但现实中,有的系统无法使用外部的认证,授权信息库,所以就需要在应用系统和Portal Server之间进行认证,同时进行授权信息的数据同步。
      

  3.   

    http://topic.csdn.net/t/20061011/13/5074722.html 
    实例,刚我去下来看了
    正确,同时有实例
      

  4.   

    登录
    1. 打开A网站进行登录;
    2. 检测Login服务器是否可用;
    3. 如果Login服务器可用,检测发现Login服务器Session未创建;
    4. 重定向到A网站的页面,接受Login服务器传来的Key和UID组成的类序列化后的数据;
    5. 得到的Key是1,说明Login服务器Session未创建,在A网站创建Session,登录完成后使用<script>访问Login服务器上的页面创建Session并记录网站名和网站登出页面地址;
    6. 打开B网站登录,发现没有登录,检测Login服务器是否可用;
    7. 如果Login服务器可用,检测发现Login服务器Session已经创建并记录网站名和网站登出页面地址;
    8. 重定向到B网站的页面,接受Login服务器传来的Key和UID组成的类序列化后的数据;
    9. 得到的Key不是1,说明Login服务器Session已经创建,根据Key到数据库进行验证,验证通过后在B网站创建Session。
    登出
    1. 每个网站都有登出按钮,点击按钮后先清空本地Session;
    2. 然后检测Login服务器是否可用;
    3. 可用的话跳转到Login服务器的登出页面;
    4. 根据Session中存储的已登录网站名和登出页面地址,生成<img>指向各个网站的登出页面;
    5. 登出成功后登出页面显示图片(返回图片流),如果登出失败(页面不能访问)则显示本地登出失败图片。特点
    1. Login服务器就算Down了各个网站也能分别登录和登出;
    2. 巧妙使用临时GUID来做验证令牌;
    3. 巧妙使用script和img的src来访问登录登出页面创建和撤销Session。