关于全局门票和临时票据之间的关系,不是太清楚

关于全局门票和临时票据之间的关系,不是太清楚

老师,临时票据我当前为什么会理解是有点多余呢,不是有了全局门票,到哪都可以进行访问了吗,为什么还需要一个临时票据,他的核心作用是做什么的,不是很理解。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

小光光你好啊,理解单点登录,大脑中要有这几个概念,一次会话(打开浏览器就是一次会话开启,关闭浏览器是会话关闭),用户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,也就不能保证安全性。

  我认为临时票据是为了保证用户的安全性。

  • 我在想全局的会话 id 不就是用户的 token(也就是视频中的 userId),都存在于 cookie 中了能再 cookie 中拿到了. 为什么还要生成临时的票据,我直接用这个全局的 userId 都可以到 redis 中获取到用户的会话信息 userResulte了,为什么要绕下用临时会话去换取呢? 

    2021-05-22 19:32:49
Java架构师讲师团 2019-12-29 10:58:31

就是说脱离redis也可以用的,这个如果在cas
仅仅只是一个普通的session的话,那么存入这个session中,作为一个token也行的

  • 提问者 修心光 #1
    老师,更迷茫了,我刚刚想了一下,是为了那些没有小景区门票的人做拦截用的吗??
    2019-12-29 11:04:28
  • Java架构师讲师团 回复 提问者 修心光 #2
    在这里虽然称之为是全局。因为用到了redis,所以可以这么说。但是如果所有系统没有用redis,那么cas这里的就是私有的。 举个例子,景区大门和各个小景点之前没有联网,那就是私有,如果联网那就是全局了。
    2019-12-29 11:11:10
  • 同问老师们
    2020-03-03 22:15:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师