12Next >

评论列表
#1楼2016-11-29 16:54送给未来的自己
明白 感谢分享
#2楼2016-11-29 17:43小小沧海
好文收藏
#3楼2016-11-29 22:18梁逸晨
楼主,我是冲着你的头像来的,几月?
#4楼[楼主] 2016-11-29 22:50凌承一
@ 梁逸晨
九月
#5楼[楼主] 2016-11-29 22:53凌承一
@ 小小沧海
谢谢支持
#6楼[楼主] 2016-11-29 22:53凌承一
@ 送给未来的自己
谢谢支持
#7楼[楼主] 2016-11-29 23:01凌承一
@ 梁逸晨
登山行摄领队+程序员大神,膜拜
#8楼2016-11-30 02:27梁逸晨
@ 凌承一
引用@
梁逸晨
九月


下次再有空来找我,难得有it人士会在高原说话
#9楼[楼主] 2016-11-30 09:46凌承一
@ 梁逸晨
头像是14年9月拍的,今年9月我又去了一次,可惜了,等以后的机会吧!
#10楼2016-11-30 11:17但用此心
登录系统2 后 sso 认证中心 如何判断 用户已经登录的
#11楼[楼主] 2016-11-30 11:21凌承一
@ 但用此心
登录系统1时,已经有一次跳转到sso认证中心,那个时候还输入了用户名与密码信息,sso认证中心验证用户名密码正确后,将用户与sso认证中心的会话标记为“已登录”了,之后再跳转到sso认证中心,会话当然还是“已登录”状态
#12楼2016-11-30 11:23程序人生0407
很详细
#13楼[楼主] 2016-11-30 11:25凌承一
@ 程序人生0407
谢谢支持
#14楼2016-11-30 11:27但用此心
@ 凌承一
用户直接访问系统2 的资源的时候,在客户端是未登录的状态,不带sessionid 和其他的标示,sso 认证中心如何判断是已经登录的 , 登录系统1 的时候 sso 认证后,是不是还有1步sso 跳转到系统1 的过程,客户端302 到系统1 ,系统1 返回应答,命令客户端写系统1 的sessionid 的cookie?
#15楼2016-11-30 11:43但用此心
@ 凌承一
想清楚了 ,访问系统2的时候跳转到 sso 认证,客户端带上sso 认证的sessionid,根据这个id 可以定位用户

写的很详细 谢谢
#16楼[楼主] 2016-11-30 11:44凌承一
@ 但用此心
sso认证中心只是判断用户与它之间的会话有没有标记为“已登录”,用户与系统1、系统2之间的会话状态,sso认证中心是不管的。
#17楼2016-11-30 11:47Sam Xiao
前几天不是有一个哥们也写了 可跨域的单点登录(SSO)实现方案【附.net代码】 的博客吗?我还以为是同一个。
#18楼[楼主] 2016-11-30 11:51凌承一
@ Sam Xiao
哈哈,我只是简单介绍了多系统跨域登录的解决方案,源码我有,并不复杂,不过还是自己实现一遍更好
#19楼2016-11-30 13:35鬼谷君
l不错,写的蛮详细
#20楼2016-11-30 14:06最爱晴天
关于单点撤销,按楼主的方案是不是需要预先知道其他的子站点,然后一个站点退出了, 就循环去调用其他站点提供的清除回话的方法?
#21楼[楼主] 2016-11-30 14:08凌承一
@ 最爱晴天
不用,单点登录过程中有一步是子站点向sso认证中心注册,注销的时候,sso认证中心取出这些注册系统地址,依次发送注销请求就行了
#22楼2016-11-30 14:58莹仔Ken
你这个方法如果我用不同公司的浏览器就不行了?
#23楼[楼主] 2016-11-30 15:03凌承一
@ 莹仔Ken
和浏览器没有关系,浏览器都实现了cookie
#24楼2016-11-30 16:50破剑冰
很详细, 终于搞明白了.
#25楼2016-12-01 08:32gnib
mark
#26楼2016-12-01 08:40刘标才
有几点不明白:
1、为什么是系统1输入用户名密码,而不在sso中直接输入呢,这样密码更安全
2、为什么拿到token后还要去sso验证是否正确呢,双方使用事先设置好的加密Key就可以保证安全了,没有必要多这一步
3、同时注销真的不知道怎么实现,难道一次可以跳转N个地址吗

其实楼主你去看下oauth就知道了,步骤基本相同
comment_3569423_avatar http://pic.cnblogs.com/face/u36499.jpg?id=30171922
#27楼2016-12-01 10:08活在當下
如果被别人拦截到令牌,是不是就可以授权访问了?
#28楼[楼主] 2016-12-01 10:12凌承一
@ 刘标才
系统1没有输入用户名密码,只有sso认证中心可以输入用户名密码;
sso认证中心给了子系统token,但子系统使用token前必须去sso认证中心校验token有效性,一是因为sso认证中心要登记使用了此token的子系统,二是校验的过程中sso认证中心可以对子系统的合法性校验,即使token被截获,也不会有安全问题;
注销不是用跳转来实现的,sso认证中心向所有登记过的系统发送带有“logout”参数的注销请求
#29楼[楼主] 2016-12-01 10:13凌承一
@ 活在當下
看我28楼的回复
#30楼[楼主] 2016-12-01 10:14凌承一
@ 刘标才
oauth和sso本质都是认证中心向子系统授权,原理一样,过程自然差不多
#31楼2016-12-01 10:21活在當下
@ 凌承一
“系统1拿到令牌,去sso认证中心校验令牌是否有效”,sso中心是怎么确认令牌有效的呢?
#32楼[楼主] 2016-12-01 10:24凌承一
@ 活在當下
sso认证中心在用户输入正确用户名密码后创建授权令牌,存储在key-value数据库如redis中,令牌为key,令牌有效的意思就是数据库有这个key,并且还在有效期内,你知道,key-value数据库的key可以设置有效期的
#33楼2016-12-01 10:46活在當下
@ 凌承一
这个又回到我之前的问题了,如果别人截获令牌,怎么知道是不是正常的请求令牌还是被截获的,因为你是说只要判断这个键值是否在数据库中吧
#34楼[楼主] 2016-12-01 10:51凌承一
@ 活在當下
理论上,不管谁拿到令牌,只要这个令牌有效,就是可以用的,但你拿着这个令牌去sso认证中心校验并注册的时候,sso认证中心是有一份系统白名单的,名单上的系统拿着令牌才能注册成功,其他系统sso认证中心都认为是非法的
#35楼2016-12-01 10:59dudu
在.NET平台上有一个单点登录认证中心的开源实现(支持.NET Core) https://identityserver.io/
#36楼[楼主] 2016-12-01 11:00凌承一
@ 活在當下
可能你在电视上看到了很多,拿着别人令牌开门、放人等等,因为那些人只认令牌不认人,系统白名单的作用就是认人,这样令牌被盗也没关系
#37楼[楼主] 2016-12-01 11:01凌承一
@ dudu
谢谢支持,开源sso一直不缺的
#38楼2016-12-01 11:05AlanCoder

这里 如果是跨域 怎么知道之前已经登录过了,能具体点 ?
#39楼[楼主] 2016-12-01 11:08凌承一
@ AlanCoder
我相信你再仔细看一会就明白了,图加上文字说明以及开始介绍的会话、登录机制
#40楼2016-12-01 11:11KarasCanvas
jwt+oauth
#41楼2016-12-01 11:27灵雨飘零
mark
#42楼[楼主] 2016-12-01 11:28凌承一
@ KarasCanvas
这就涉及到sso-client与sso-server具体通信过程和安全问题了,如果有自己独立的ca系统,jwt或者https是非常好的选择
#43楼2016-12-01 11:47梦亦晓
site1,site2,sso认证中心的session过期时间能不能保持一致?
#44楼[楼主] 2016-12-01 11:53凌承一
@ 梦亦晓
原来你就是有人提到过的整那篇【可跨域的单点登录(sso)方案附.net代码】的淫
子系统的会话持续时间是依赖sso认证中心的会话持续时间的,因为监听器的存在。要让子系统与sso认证中心保持一致的会话持续时间,可以这么做
子系统向sso认证中心校验令牌时,sso认证中心返回这个令牌对应全局会话的剩余时间,子系统将这个时间设为局部会话的持续时间
#45楼2016-12-01 12:00梦亦晓
@ 凌承一
session的过期时间不应该设置为滑动过期时间吗?如果登录成功后sso的过期时间设置为1分钟,site1的过期时间设置为1分钟,浏览器和site1持续交互,会导致site1会话session一直有效,而sso的会话session失效
#46楼[楼主] 2016-12-01 12:04凌承一
@ 梦亦晓
当然不会了,sso会话一旦失效,sso认证中心的会话监听器就会向所有注册子系统发出注销请求,子系统的会话也会失效,看下【三、单点登录】介绍的局部会话与全局会话的关系
实际上,子系统的会话持续时间一定不会超过sso认证中心的会话持续时间
#47楼2016-12-01 12:31梦亦晓
@ 凌承一
如果因为用户一直在操作site1而导致site1的会话session一直有效,而sso的会话session失效。怎么能强制注销site1的session会话呢?
#48楼[楼主] 2016-12-01 12:33凌承一
@ 梦亦晓
sso认证中心的会话监听器,参考文章的最后一节以及单点登录的注销过程
#49楼2016-12-01 12:36梦亦晓
我知道你是用http分发的方法注销分站的session。
而我是说不能注销site1的会话,你总不能在用户和site1交互的过程中因为没有更新sso会话的过期时间而强制注销site1的会话吧。
#50楼[楼主]2016-12-01 12:44凌承一
@ 梦亦晓
授权的源头都失效了,site1怎么还能允许用户继续操作?
你是想随着用户持续访问分站,而自动延长sso认证中心的会话时间是吧,那可以为分站的会话加一个监听器,监听时间变化,然后向sso认证中心发送加长会话持续时间的请求
这样可以达到你的目的,但非常不合理,授权过程一切以sso认证中心为主,分站怎么能要求认证中心去做改变!
如果不想用户访问过程突然中断,可以加长sso认证中心的会话持续时间
12Next >