请教几个关于单点登入(SSO)的几个疑问?

最近在看单点登入的原理,有几个疑问很不理解,希望有经验的兄嘚给解释解释哈!

这是在网上找的一张图:我在上面标注了几个疑问点
图片描述

问题描述:
如图所示,当用户访问系统1(简称:A)的时候,A发现用户没有登入,于是携带A的地址跳转到认证中心再次验证(这里所谓的跳转我理解应该是请求认证中心的验证接口吧!),发现真的是没有登入。所以跳转到登入页面(网上很多人说这个登入页面是认证中心的统一登入页面,但是我参照天猫、淘宝的登入,发现登入页面是他们各自的页面,只是提交数据的form表单的action请求地址是一样的)。

问题1: 为什么在登入界面提交了用户登入的数据到认证中心后,认证中心创建了全局会话(应该是认证中心创建的session吧,)、创建授权令牌,然后携带令牌跳转到系统1,系统1为什么还要携带令牌到认证中心再次认证一次呢?

问题2:用户在系统1上登入过了,此时当用户访问系统2时,系统2发现没有登入,于是携带系统2的地址跳转到认证中心验证,发现该用户已经登入了。我想问的是,为什么认证中心会知道用户已经登入了。在序号3(我标记的序号)位置,系统2跳转到认证中心,并没有携带什么数据,认证中心怎么会知道,访问系统2的这个用户已经登入了

阅读 1.5k
1 个回答

问题1:假如用户伪造一个令牌,请求系统1。 而系统1不去认证中心校验,怎么知道是否是合法的?
问题2:会话机制。登录后信息放到Cookie里,此后浏览器向同一个域名发请求时,会自动带上的,不需要在代码里实现。你可以打开浏览器调试,自己观察一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题