单点登录SSO(Single Sign On)

单点登录是一次登录 ,可以访问多个应用 .在复杂的软件体系中 ,减少登录的操作时间 .

登陆后 ,将登录成功的凭证(账号密码/Ticket/Token)放在Cookie(公共域名或者父域名下) .登录其他应用的时候带上这个Cookie ,其他应用只需要校验Cookie里的信息就可以判断是否登录 .

缺点 : 不能跨域(硬伤)/Cookie不安全(加密md5验证)

  • Cookie通过域名区分 ,浏览器只会传递Cookie给同一域名下的网页 .

    通过Domain和Path细分 : 域名是倒叙 ,表示父子结构 ;Path表示主机上的访问路径 .

    baidu.com 适用百度下所有子应用
    baike.baidu.com 只适用百度百科
    baike.baidu.com/link 只适用百科link路径下的请求

  • 但只是看起来安全 : 例如之前使用百度搜索关键字”word” ,到另一个嵌入了百度广告系统的网站B ,B里面的广告直接和”word”相关 .

  • 使用百度搜索时 ,将关键字写入较高级别的Cookie ;因为广告系统同属Baidu ,进入网站B时加载广告系统 ,将Cookie带入 ,广告系统获取了搜索的关键字 ,自动推荐 .但实际上这是一种隐私暴露 .

JSONP

通过父应用进行登录 ,将登录凭证存放在父应用Session中 .登录子引用时 ,通过Cookie信息(只包含简单的用户名) ,调用父应用的验证接口 ,由父应用告诉是否已经登陆过 .避免Cookie的敏感信息存放本地的一些问题 .

缺点 : (已知加密算法时) 将子应用访问引到伪造的父应用(绑定本地host)上 / 伪造响应请求给子引用直接登录 / 一定程度上的跨域(需要共享父应用的Cookie)

重定向

设置一个单独的登录系统SSOSite ,访问网站A的请求(请求参数中包含请求路径)都被重定向到SSOSite ,进行登陆后创建Cookie ,并重定向到目标网站A .再次访问B时 ,也重定向到SSOSite ,此时已有Cookie(SSO的) ,返回并重定向到B .

参考 SSO单点登录三种情况的实现方式详解 最后一种

单点登录理解并不困难 ,主要在于解决 跨域和安全性 上需要诸多考虑 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值