小谈SSO单点登录原理

此文章只讲述原理, 实战解决方案请见另一篇<<SSO单点登录方案大全>>

一.什么是SSO?

 单点登录(SingleSignOn), 即一处登录, 处处可用, 多用于分布式.

二.SSO有哪些类型?

 ①完全同域SSO
 ②同父域SSO
 ③ 跨域SSO

完全同域:  项目处在同一个域名, 但项目名不同.
同父域:   两个域名是多级域名, 但父级域名是一样的, 如: test1.cutedou.com 和 test2.cutedou.com
完全跨域:  处于完全不同的域名下

三.实现原理

 访问目标资源时, 校验cookie, 有, 通过, 没有, 跳转到登录页, 经过统一登录接口, 登录成功, 服务器向浏览器写入cookie(服务器按自己的规则进行加密), 访问另一项目时 , 携带此cookie, 并校验有效性(即cookie通过自定义规则解密后是正确的)则通过(直接访问目标资源), 无效则跳转登录页.

cookie路径和跨域问题:
 ① 完全同域: 将cookie的路径设置为域名下的顶级路径/, 则在该域下的所有项目都携带此cookie.
 ② 同父域: cookie路径和完全同域情况下是一样的, 要新增的是保存cookie的域的位置, 既然父域是一样的, 那么就将cookie存入父域中, 即需要增加以下代码: cookie.setDomain(“.cutedou.com”), 注意需要以”.”开头. 即cookie的跨域, 这样相同父域名的子域名之间cookie是共享的.
 ③ 完全跨域: 在登录校验服务器完成登录校验时, 各自服务器返回自己的页面时, 在页面使用隐藏的iframe对所有服务器生成自身cookie的url进行调用(这个方法真笨, 等我百度出来好的),设置路径为/

四.问题

1.首次访问项目被拒绝, 跳转到登录页, 登录成功后, 应该跳转到哪个项目的首页呢?

答: 后台做登录校验时, 暂存一下客户端想访问的资源路径, 例如可以声明一个String类型的gotoUrl保存一下请求路径, 等到登陆成功, 重定向到gotoUrl.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值