跨平台跨服务器跨网站SSO(单点登录)方案的DEMO

http://www.cnblogs.com/lovecherry/archive/2006/10/09/524510.html改进而来

登录

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。

完整代码下载 http://www.cnblogs.com/Files/lovecherry/SSO.rar

本站下载此文件

注:Login和WebSiteTest分别是登录网站和测试网站。在测试的时候,WebSiteTest部署到2个服务器,Login部署到第三个服务器,注意修改WebsiteTest的web.config文件中的:
 <appSettings>
  <add key="RegLogin" value="http://pc-yzhu/login/default.aspx?key={0}logouturl={1}name={2}"/>
  <add key="LoginUrl" value="http://pc-yzhu/login/default.aspx?url={0}logouturl={1}name={2}"/>
  <add key="LogOutUrl" value="http://pc-ywgong/WebSite/LogOut.aspx"/>
  <add key="name" value="WebSite"/>
 </appSettings>

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值