【提要】
手头上正在准备开发集团内网站间的单点登录系统。目前公司有15个左右的网站已经上线,今后还陆续地会有新的网站,基于该状况下开发SSO系统,使每个成员网站的登录做到无缝连接。
【需求】
主要是登录方面的:
a、 SSO系统要实现各个成员网站的无缝结合,只要用户经过了认证服务器的验证(Passport服务器),该用户访问其它任何的网站时,都不需要再次登录。
b、 用户在第一次登录时,Passport服务器验证身份之后的cookie验证票,只需保存到Passport服务器所在域的cookie中,不能采用向每个成员网站所在的域中写cookie,防止响应时间太长,给用户带来不友好的浏览体验。同时,把下发给用户的cookie票保存到Passport服务器的数据库中,方便验证方式和用户使用情况统计的扩展。
c、 用户一经通过身份验证,成功登录了某个成员网站(假设为网站A),需要利用Session和cookie两种方式保存用户已经登录的状态。
d、 同一个浏览器进程中,用户在网站A的页面间跳转时,只需要根据Session中的状态变量加载登录框。不需要再与Passport服务器通信验证用户的身份。
e、 用户通过验证登录了网站A,若用户从网站A跳转或重新打开浏览器登录其它成员网站(假设网站B),都需要与Passprot服务器通信验证用户的票。但是,这次验证不要Passort服务器与数据库中保存的验证票进行比较验证,只需要验证Passport服务器域中的cookie验证票有效即可。
f、 对于验证cookie票,若需要可以作加密和数字签名保证cookie的机密性,完整性和不可抵赖性。
g、 若果Passport服务器Down掉后,仍可以直接登录成员网站。
【疑问】如何建立单点登录(SSO)服务器与各个成员网站用户的映射关系;如何保证数据的一致性和完整性;如何保证当SSO服务器Down掉后,用户仍可以直接登录某个成员网站;若用cookie保存状态信息,如何保证cookie的安全;设计中还要考虑以后的扩展,比如用户浏览行为的数据分析等等。
哪位大侠做过类似的项目,请指点迷津。在此,小弟谢过了。