基于Cookie的原理,实现单点登陆

时间:2024-11-16 19:31:03
统一登陆页面


deam1 deam2 两个模块登陆


cookie 设置 和 校验(存在)


同域流程:
1.deam1访问 没有cookie 跳转至,并带走url(localhost/)
2.登陆,校验用户名和密码,设置cookie 跳转
3.deam2访问,存在=ssocookie,=sso的值,不登陆,直接访问


同父域流程:
( / / )
大体与上面的流程一致,但注意几个问题
1.两个域需要与通信,来校验cookie
的设置 (".");
               ("/");
  将cookie设置在相同父域的根上。确保两个工程下的类都能获得cookie。
3.通过httpUrlConnect与check域下的程序通信。


备注:
************************************************
HttpURLConnection实现网络连接数据传输,
SOAP以XML方式定义传输的数据格式(当然SOAP不光光定义数据格式,还包括方法、消息很多格式)
************************************************


跨域流程:
( / / )
大体与上面的流程一致,但注意几个问题
1.跨域sso的实现依赖于前段页面,添加iframe ,当登陆成功时,加载iframe的src,
同时想a和b发起请求,分别向本域设置cookie,并reponse返回。
2.因为是跨域,所以cookie的设置不能放在上。因为那样做只会把cookie设置在
域中。
3.把登陆和cookie的校验都放到下,做到统一处理。但返回的成功页面分别对应
a,b两个域下的登陆成功页面。
特殊话。path要做成变量,因为不确定先登陆那个程序。


************************************************************************end


备注:第一次登陆,不存在cookie,统一返回到
      form标签的action要灵活处理(/deam1/或/deam2/)。返回success。
      对应的success指向=gotourl(注意,在struts中要设置为type=redirect),做cookie校验。通过返回到当前域下的程序主页。
      分别在各个域下的程序主页做cookie处理,在主页中隐藏iframe,c:foreach循环出多个,当加载主页时,也会同时加载iframe发出请求,
      在多个域下同时设置cookie。确保sso的实现!