Fork me on GitHub

SSO

注意:所有文章除特别说明外,转载请注明出处.

概念

单点登录(SSO)是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

SSO的实现方式

1.以Cookie作为凭证媒介

这种方式是最简单的单点登录方式,使用Cookie作为媒介,存放用户凭证。用户在登录父应用之后,返回一个加密的Cookie,当用户访问子应用的时候,携带上这个Cookie,授权应用解密Cookie并进行校验,校验通过则登录当前用户。

提示:这种方式有两个弊端:1.首先是Cookie不安全,虽然通过加密Cookie可以保证安全性,然这是在源程序不泄露的情况下。如果Cookie加密算法泄露,攻击者可以伪造Cookie则可以伪造特定用户身份。2.其次是不能实现跨域免登。

2.通过JSONP

对于跨域问题可以使用JSONP实现,用户在登录父应用之后,跟Session匹配的Cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求职工带上域名下的Cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。虽然这样能够解决跨域问题,但是加密算法一旦泄露,攻击者可以在本地建立一个实现了登录接口的假冒父应用,通过绑定Host来把子应用发起的请求指向本地的假冒父应用,并作出回应。

3.通过页面重定向

通过父应用于子应用来回重定向中进行通信,实现信息的安全传递。

4.独立登录系统

用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用。第三方应用需要登录的时候,则把用户的登录请求转发给用户中心进行处理,用户处理完毕返回凭证,第三方应用验证凭证,通过后就登录用户。

本文标题:SSO

文章作者:Bangjin-Hu

发布时间:2019年10月15日 - 09:22:26

最后更新:2020年03月30日 - 08:02:14

原始链接:http://bangjinhu.github.io/undefined/Single Sign On/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Bangjin-Hu wechat
欢迎扫码关注微信公众号,订阅我的微信公众号.
坚持原创技术分享,您的支持是我创作的动力.