实验室的一个项目:主站是java web,记为A,有个子项目是python的,记为B。需要实现单点登录。
最初的想法是用第三方的CAS,可是自己觉得配置麻烦,而且也没啥时间进行二次开发。参考了Ucenter的原理后,决定采取一个简单的方法。
Ucenter的原理:socket远程打开ucenter,并且传输已经登陆的公用UID,ucnter循环通过JS调用各应用下的api,在各个地方设置cookie,而保证cookie通用的则是P3P处理[注意不同应用下的api脚本不一样,bbs的uc.php不同于uchome的uc.php]。
我的方法:B站的登录采用A的登陆页面,登录操作后,A通过httpClient向B发送url请求,通过url把用户名和登录结果(都是加密后的)发给B。B接受url后,通过后台实现该用户是否登录成功。A的登录页面再跳回B站。
缺点:最大的问题是安全性;需要考虑到效率问题。