近日研究了
Sina CAS
的登陆过程,发现其实
sina
的
sso
实现了
yale-CAS
并且添加一丁点新的东西,基本认证过程交互流程仍然未变。其独创的一点是实现了
Ajax
单点登陆,算是比较牛。实现原理是
iframe+ javaScript
回调函数。
一,初级
SSO
初级的
SSO
,就是在同一个顶级域名下,通过种入顶级域名的
Cookie
,来实现统一登陆。例如:
单点登陆地址:
sso.xxx.com/login.jsp
应用
1
:
web1.xxx.com/login.jsp
应用
2
:
web2.xxx.com/login.jsp
应用
3
:
web3.xxx.com/login.jsp
登陆流程:
情况一:(用户从未登陆)
1,
用户访问
web1.xxx.com/login.jsp
,
web1
重定向到
sso.xxx.com/login.jsp
2,
用户输入验证,成功。
sso.xxx.com
种入
.xxx.com
域
Cookie
的
tokenid
,重定向到
web1.xxx.com/login.jsp
,
web1.xxx.com
访问
.xxx.com
域
Cookie
的
tokenid
判断出已经登陆,系统登陆完成。
情况二:(用户已经登陆)直接登陆。
二,
Sina SSO
Sina
实现了跨域名的统一登陆,本质也是基于
Cookie
的。如果用户禁用
Cookie
,那么无论如何也是登陆不了的。例如:
Sina SSO
服务器是
login.sina.com.cn/sso/login.php
,微博登陆地址为
weibo.com/login.php
。通过回调函数和
iframe
实现了跨一级域名的登陆。
认证过程具体流程:这里只介绍用户从未登陆过。
1,
用户进入
weibo.com/login.php
2,
用户输入用户名称。输入完毕后,当用户名输入框焦点失去的时候,页码通过
ajax
向服务器
login.sina.com.cn/sso/prelogin.php
发送请求,参数为
user
(刚刚输入的用户名)。服务返回
server time
和
nonce
认证,通过回调函数写入到
javascript
变量中。
3,
用户输入密码,点击登陆,页面
POST
请求(注意是
ajax
请求,并不是
login.php
发送的
),
login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.12)
,请求的发起的页面是
weibo.com/login.php
中的一个不可见
iframe
页面,参数为第二步得到的
server
time
和
nonce
,已经用户名称和加密的密码。返回种入
Cookie
tgt
在
login.sina.com.cn
下。同时修改
iframe
地址为
weibo.com/ajaxlogin.php?ticket=XXXXXX,
注意
ticket
非常重要,这是用户登陆和服务的凭证。
4,
iframe
访问
weibo.com/ajaxlogin.php?ticket=XXXXXX
,用户登陆,返回种入
cookie
在
.weibo.com
下,记录用户登陆信息。
5,
通过
js
再次访问
weibo.com/login.php
,因为
cookie
已经写入,登陆成功,服务器发送
302
,重定向到用户主页面。
Weibo.com/userid
。
6,
至此,登陆过程完成。
重点:交互过程和密码加密算法分析。
分享到:
相关推荐
spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource 127.0.0.1 sso-tmall 127.0.0.1 sso-taobao windows系统的路径在C:\WINDOWS\system...
SSO单点登陆SSO单点登陆SSO单点登陆
如何实现单点登陆着信息技术和网络技术的迅猛发展,企业内部的应用系统越来越多。比如在媒体行业,常见的应用系统就有采编系统、排版系统、印刷系统、广告管理系统、财务系统、办公自动化系统、决策支持系统、客户...
一个实现SSO方案的构想SSO单点登陆解决方案
MVC SSO 单点登陆完整demo
xxl-sso流程分析
SSO简介SSO一次登录处处穿梭比如校园卡比如新浪微博新浪博客,只要登录一次,就可以不用重复登录SSOSingleSignon,单点登录,保证一个账户在多个系统
跨服务器登录验证(单点登录SSO)过程和Java实现
学习SSO单点登陆很好的例子,内附源码解释。由网上收集。很值得学习。
自己动手写sso java 简单实现 使用 目前流行的 springboot 做基础
SSO开源项目,基于https的,大家可以在网上搜索研究一下!
SSO单点登陆 ---详细图解 不可多得。 很实用! 不实用不要分。
C#单点登陆组件源码SSO(类似微软认证服务器和WEB应用服务器,可跨域跨服务器...)
@EnableOauth2SSO客户端单点登录全分析,springcloud搭建 对springcloud springsecurity oauth2继承使用
SSO单点登陆源代码用户控件,部署再moss中,可以实现单点登陆
SSO系统 1) 用户在单点登录系统输入用户名(社编) 和密码,进行登录; 2) 单点登录校验输入的用户名(社编)和密码,验证不通过,转到错误页面。 3) 如果验证通过,则从映射表中取出该用户所有能访问的应用系统...
所谓SSO认证,通俗的一点讲就是,自己写的app需要使用新浪或腾讯微进行分享、发表微博等操作。如果用户的手机客户端安装了符合SSO认证的新浪、腾讯等微博客户端版本且已登录,则会自动启动新浪、腾讯等微博客户端...
用户SSO接口API源代码,适用于各终端联合登陆,支持用户名密码,短信,crc校验 包含数据库脚本(Oracle,MySql) 代码结构 trunk |__SSO.Lib |__SSO.BLL |__SSO.DAL |__SSO.Domain |__SSO.ManageFacade |__...
SSO单点登陆,包中有文有例子!供学习参考!