当前位置:asp编程网>技术教程>Asp教程>  正文

多服务器网站单点登陆(SSO)解决方案

2011-09-21 13:51:53   来源:网络    作者:未知   浏览量:1871   收藏

经常遇到这样的情况,在一个大网站下的某个频道中登录成功,在其下属网站都不需要登录了,他们的整合的非常好,即使是域名不一样也没有影响的。这种情况下就需要使用单点登录方式来解决。这里在网上收集的一个关于单点登陆(SSO)的解决方案,拿来和大家一起分享。

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。

当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。


支持多域的单点登陆:

1、需要验证服务器验证服务器相当于同一入口,任何登陆和注销工作都会通过这里,验证的工作也在这里进行

2、过程

a,b,c服务器为业务服务器,d为验证服务器

用户A在a服务器上进行需要验证的操作(比如url_a),a服务器发现用户未登陆,则跳转到d服务器的登陆页面,d服务器通过A用户验证后,生成用户的session,并同时生成用户的一次性令牌并附加在url_a后面(比如url_a?ssid=key_id)进行跳转,此时a服务器根据传入的ssid通过远程调用或者服务器间私有通道调用d服务器的验证服务,d服务器判断令牌是否有效并删除次令牌,如果通过验证此时a服务器获得用户信息,d服务器记录a服务器的地址,此时A用户在a服务器上已经登陆了。如果A用户在b或者c服务器上访问需要验证的操作比如(url_b),则跳转到d服务器的登陆页面,因为已经存在着a用户的session,此时同样生成一次性令牌重复上述过程。

3、退出过程用户A在a、b服务器登陆,用户点击d服务器的退出链接,则d服务器清除d服务器session,同时根据session中A用户登录过的服务器列表通过页面上有img指到a,b服务器的退出功能,此时通过这种方式同时清除a,b服务器上的A用户session



关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网