SSO单点登录

SSO单点登录:一处登录,多处使用;

两种开发模式:  

  1. 通过4A权限认证平台进行统一管理 sso  

  2. ucenter开发原理, server(一个)  client(多个)

  3. cuenter p3p协议跨域cookie设置,发送js代码

  4. www.a.com 登录成功, 发送api请求给ucenter服务端-> ucenter根据配置的每个需要同步登陆的网站发送 JavaScript请求 ,并且携带参数(需要通过加密计算)。www.b.com/login.php 

  5. www.b.com/login.php需要对数据进行解密 中需要使用 P3P协议才有权限设置 cookie, 在设置cookie和session中,需要指定域名



背景

在企业发展初期,企业使用的系统很少,通过一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便

但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统账号都不一样,这对于运营人员

来说,很不方便,于是就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单端登录需要解决的问题

在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统

MyAnswer博客

如图所示:

图中有系统系统,分别是application1 , application2, application3 和sso   application1 ,application,application 没有登录模块

而sso 只有登录模块,没有其他业务模块 当 application1 application2 application3需要登录时,将跳转到sso系统,sso系统完成登录

其他应用也就随之登录了,这完全符合我们对单点登录的定义

技术实现:

在说单点登录的技术实现之前,我们先说一说普通的登录认证机制



MyAnswer博客

如上图所示,我们在浏览器browser中访问一个应用,这个应用需要登录,我们填写完用户名和密码后,完成登录认证,这时,我们在

这个用户的session中标记登录状态为yes(以登录),同时在浏览器browser中写入cookie,这个cookie是这个用户的唯一标识,下次

我们再访问这个应用的时候,请求中会带上这个cookie,服务端会根据这个cookie找到对应的session,通过session来判断这个用户

是否登录,如果不做特殊配置,这个cookie的名字叫做jsessionid,值在服务端是唯一的

同域下的单点登录

一个企业一般情况下只有一个域名,通过二级域名区分不同的系统,比如我们有个域名叫做: a.com 同时有两个业务系统分别是 aap1.a.com

app2.a.com 我们要做单点登录sso 需要一个登录系统,叫做 sso.a.com

我们只要在sso.a.com登录,app1.a.com和app2.a.com 也就登录了,通过上面的登录认证机制,我们可以知道,在sso.a.com 登录了,其实是在sso.a.com的服务端的session中记录了登录状态,同时在浏览器的sso.a.com下写入了cookie,那么我们怎么才能让app1.a.com和

app2.a.com登录呢,这里有两个问题

  1. cookie是不能跨域的,我们cookie的domain属性是sso.a.com 在给app1.a






未完

https://www.jianshu.com/p/75edcc05acfd




MyAnswer博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论