关于全局门票和临时票据之间的关系,不是太清楚
老师,临时票据我当前为什么会理解是有点多余呢,不是有了全局门票,到哪都可以进行访问了吗,为什么还需要一个临时票据,他的核心作用是做什么的,不是很理解。
正在回答
小光光你好啊,理解单点登录,大脑中要有这几个概念,一次会话(打开浏览器就是一次会话开启,关闭浏览器是会话关闭),用户token(通过这个token可以去后台做该用户的相关操作),全局门票(通过全局门票可以获取用户id,从而拿到用户token),临时门票(是让你进入其他应用的权限,而且只能使用一次),我们来模拟一个场景(有三个系统,天猫系统,淘宝系统,登录系统),我打开谷歌浏览器,一次会话开启(我称为会话1),同时打开三个系统,我在淘宝系统下单,因为没有登录,所以会话1在淘宝系统的cookie中也没有用户token,然后会话1去登录系统的cookie中寻找是否有全局门票(有的话代表在其他系统登录过,反之就没有),发现没有,这是我就在登录系统登录,登录成功,会话1就在登录系统产生了了用户token,全局门票,临时票据。把全局门票设置在cookie中(会话1的全局门票),然后把临时票据返回给用户,用户拿到临时票据,用户拿着临时票据去登录系统,验证有权限,验证通过删除临时票据,把用户token返回,用户拿到用户token就可以去淘宝系统下单了(并且把用户token保存在会话1)。用户再去天猫系统系统下单也没有登录(此时浏览器没有关闭,也是会话1),然后就去登录系统判断是否有全局门票,通过会话1判断登录系统的cookie有全局门票,发现有,代表在其他系统登录过,这时生成一个临时票据,返回给用户,用户通过临时票据换取用户token,进而在天猫系统下单(并在用户token保存在天猫系统cookie中)。
补充一下必须是同一次会话,才能拿到用户之前登录在登录系统中设置在cookie中全局门票
我们在做一个假设,如果不要临时票据,通过全局门票就可以拿到用户token,这样的话,只要其他人知道了全局门票,就可以用你的全局门票拿到你的用户token,用户token就可以做用户的相关操作。那就可以用你的用户token在天猫系统和淘宝系统挥霍金钱,放飞自我了。你不害怕吗?
在回过头来看,想做单点登录要保证的是同一次会话(这个是核心),之前登录过,我就可以在同一次会话中获取全局门票,得到临时票据,进而拿到用户token。如果不要临时门票,通过全局去拿,任意会话都可以拿到用户token,也就不能保证安全性。
我认为临时票据是为了保证用户的安全性。
就是说脱离redis也可以用的,这个如果在cas
仅仅只是一个普通的session的话,那么存入这个session中,作为一个token也行的
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星