日期:2014-05-19  浏览次数:20444 次

请教单点登录的几个问题!~高手们进来看看,谢谢:)
一:有一个主站A,子站B,C,他们都不在同一服务器上,三个独立服务器.
1:任何从子站B,C登录的话都会转入主站A进行(即只有主站A有登录页面,子站各个页面只是进行有没有登录判断),然后验证成功后根据传来的URL再转回B或者C站.
2:如当我从子站B登录后,然后我再链接到子站C或主站A,那么子站C和主站A是独立的产生一个sessionid,还是用什么办法得到子站B产生的跟这个用户相关的sessionid??
C站或A站如果得到B站产生的与用户相关的sessionid?如果不用同一sessionid,登录某一个网站就产生一个相关的session信息,这样做好吗?有什么不足呢?
3:如果我同时登录了二个网站,但我只在某一个网站活动,另一个网站不活动,那如果另一个站session失效了应该怎么办??
4:把一些sessionid或其它标志写入cookie行吗?那跨域问题怎么办?

5:怎么样用WebService来实现验证呢?如果用它来实现了验证,那各个站点间怎么实现一些用户相关的信息共享呢?

有例子的大哥们,给一个实例可以吗?

  由于刚接触这个单点登录,有很多地方不是很明白,谢谢各个大哥帮小弟看看,指点指点!~
目前数据库用的同一个,如果独立出来也是可以的,用户表是一样的.

------解决方案--------------------
可以用POST方式把用户名和密码POST给要登陆的服务器就可以了,注意要看登陆程序是否只接收用户名和密码!有无其他隐藏参数.
------解决方案--------------------
主站点A应该做一个验证中心 在每一个子站点需登陆页面都要到这个验证中心验证,
同理,第一次登陆成功后会在主站点A上存入sessionid ,然后在验证中心也会存入.
这只能保证在同一次会话中.跨域没问题.
------解决方案--------------------
那就把验证中心放在主站点上,一样的.

------解决方案--------------------
三台服务器就需要解决跨域的问题.session是不能跨域的(据我的理解).使用Cookie也许可以解决这种问题,但这里涉及到一个同步问题(如果你的网站即有使用Session也有使用Cookie的).可能的话用微软件的PassPort吧!

仅作参考!
------解决方案--------------------
参考 http://blog.csdn.net/littlekeen/archive/2007/04/13/1563199.aspx
------解决方案--------------------
只能提醒LZ一声,cookie不能跨域的.如果硬要用cookie做,必须做中心服务器端进行cookie的转换.企业内的单点登陆解决方案很多.但跨域的可以用SAML.有一个OpenSAML(Java类库),做跨域的很强,LZ可以查询下