这就意味着,由于域名不同 ,用户向系统A登录后,系统A返回给浏览器的Cookie,用户再请求系统B的时候不会将系统A的Cookie带过去 。
针对Cookie存在跨域问题,有几种解决方案:
服务端将Cookie写到客户端后,客户端对Cookie进行解析,将Token解析出来,此后请求都把这个Token带上就行了多个域名共享Cookie,在写到客户端的时候设置Cookie的domain 。将Token保存在SessionStroage中(不依赖Cookie就没有跨域的问题了)到这里,我们已经可以实现单点登录了 。
3.3 CAS原理
说到单点登录,就肯定会见到这个名词:CAS (Central Authentication Service),下面说说CAS是怎么搞的 。
如果已经将登录单独抽取成系统出来,我们还能这样玩 。现在我们有两个系统,分别是 www.Java3y.com 和 www.java4y.com ,一个SSO www.sso.com
文章插图
首先,用户想要访问系统A www.java3y.com 受限的资源(比如说购物车功能,购物车功能需要登录后才能访问),系统A www.java3y.com 发现用户并没有登录,于是 重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:
www.sso.com?service=www.java3y.comsso认证中心发现用户未登录,将用户引导至登录页面,用户进行输入用户名和密码进行登录,用户与认证中心建立 全局会话(生成一份Token,写到Cookie中,保存在浏览器上)
文章插图
随后,认证中心 重定向回系统A , 并把Token携带过去给系统A , 重定向的地址如下:
www.java3y.com?token=xxxxxxx接着,系统A去sso认证中心验证这个Token是否正确 , 如果正确,则系统A和用户建立局部会话( 创建Session ) 。到此 , 系统A和用户已经是登录状态了 。
文章插图
此时,用户想要访问系统B www.java4y.com 受限的资源(比如说订单功能,订单功能需要登录后才能访问) , 系统B www.java4y.com 发现用户并没有登录,于是 重定向到sso认证中心,并将自己的地址作为参数。请求的地址如下:
www.sso.com?service=www.java4y.com注意,因为之前用户与认证中心 www.sso.com 已经建立了全局会话(当时已经把Cookie保存到浏览器上了),所以这次系统B 重定向 到认证中心 www.sso.com 是可以带上Cookie的 。
认证中心 根据带过来的Cookie 发现已经与用户建立了全局会话了,认证中心 重定向回系统B,并把Token携带过去给系统B,重定向的地址如下:
www.java4y.com?token=xxxxxxx接着,系统B去sso认证中心验证这个Token是否正确,如果正确,则系统B和用户建立局部会话( 创建Session ) 。到此,系统B和用户已经是登录状态了 。
文章插图
看到这里,其实SSO认证中心就类似一个 中转站。
欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼 , 给未来的自己一个交代!
文章插图
SSO是什么SSO指的是单点登录(Single Sign On) , 当用户在身份认证服务器上登录了一次以后,即可获得访问单点登录系统中其他联邦系统和应用软件的权限 。
- 为什么淘宝上的屏幕总成那么便宜「爱机屏幕碎了发现淘宝上的屏幕总成这么便宜能买吗」
- 淘宝店铺为什么搜不到「淘宝店铺号怎么搜不到搜不到的原因」
- 西安美食故事 西安的葫芦鸡
- 24节气中惊蛰表示什么意思 惊蛰是什么意思含义
- 孕妇多吃燕窝的害处
- 常犯困也是一种病 老是犯困是不是一种病
- 三月份种什么蔬菜最合适
- 宝宝一岁长多高 一岁多宝宝吃什么长的高
- 西班牙风情
- 奥斯曼帝国什么时候开始衰落 奥斯曼帝国什么时候建立