新闻动态
asp.net单点登录
https://www.sytm.net 发布日期:2010/6/17 14:50:50

asp.net 单点登录过程中面临的问题
1.注册问题:一个用户在一个网站注册后,其他网站如何获取用户注册信息?
2.依赖问题:当你的SSO服务器,也就是你提到的验证服务器Down掉的时候,其他各子网站还能不能正常登录?
3.密码同步问题:如果SSO验证服务器down掉是子站可以正常登录,那用户的密码如何处理(需不需要同步,怎么同步)?
4.性能问题:假设当你的子站有十个或更多的时候,性能怎么样保证:)
解决方案
服务器A:网站A
服务器B:网站B
服务器C:验证网站(验证表中有UID和KEY两个字段)。
1. 用户打开网站A的页面http://服务器A/a.aspx,检测发现网站Session中没有存储用户名UID。
2. 系统转到验证服务器登录页面,并在QUERYSTRING中附加前一个页面的URL地址。
比如http://服务器C/login.asp?URL=http://服务器A/a.aspx
3. 在验证服务器登录成功后更新验证服务器的Session(超时设置为足够长,比如1天)。然后生成一个GUID值,写入验证表。
最后,把这个GUID值和UID保存到一个类中序列化后附加在URL中返回网站A的那个页面。
比如http://服务器A/a.aspx?   token=sadhsagdkjasgyugd7d8yweihasdiuhagsdiuashdhaiushdi
4. 网站A的页面读取QUERYSTRING,然后反序列化出一个类,读取类的UID和KEY信息。然后,从数据库中查找匹配的记录,如果找到了则表明登录成功,
并把这条记录的KEY更新成另外一个GUID(这样就保证了即使这个URL被别人拿走再登录都不能成功)。把UID写入服务器A的Session中即可。
5. 用户打开网站B的页面http://服务器B/b.aspx,服务器B上没有当前用户的Session信息,自动转向验证服务器检测是否存在Session,
如果找到了表明用户已经登录过,再重复步骤3和4,如果没有找到就转到验证服务器的登录页面。
巧妙之处在于:
网站服务器和验证服务器都拥有一份和用户关联的Session,验证到时候不需要传任何和UID相关的信息,因此也可以跨服务器。正因为如此不需要使用cookie也解决了跨域名。
网站服务器和验证服务器可以使用自己的状态机制(不一定是Session),因此跨平台也没有问题。
用于验证用户的TOKEN使用GUID在每次验证的时候都会更换,而且GUID和UID是捆绑在一起的,即使GUID碰巧对上了也不知道这个GUID对应了哪个UID。
通过验证服务器的验证后,服务器发回的token数据经过了序列化,用户很难伪造。
(实在不放心还可以对这个token进行加密)
登录使用统一的验证服务器,登出使用httpwebrequest向所有的网站登出页面传递令牌请求取消session,应该不会很慢吧,甚至我们可以在验证服务器记录哪些网站登录过的,
这样可以有针对性abandon   session,这个方案应该不错吧!配合一点atlas的效果:
点击登出按钮:
您在以下几个网站登录过,现在开始登出
网站A...............登出完毕
网站B...............登出完毕

更多阅读
  • 线上订货系统让全渠道销售触手可及 近年来,中国电商平台发展迅速,以淘宝、京东等电商为代表的新兴商业模式被越来越多的客户所推崇,中国网民...
  • 添美订货系统十月更新日志 添美订货系统是东北开发订货软件的厂商,该订货软件实现了全渠道全客户端的覆盖。拥有南方的易订货、订货宝...
  • 三好街的渠道订货系统 现如今,人们对电子数码产品的需求与日俱增,但是不少电子数码产品企业的生意却未见起色,为什么?以三好街...
返回列表
© 2010 TianMei Technology All rights reserved. ICP:辽B2-20150138辽公网安备 21010202000010号  目录概览