最近在看单点登入的原理,有几个疑问很不理解,希望有经验的兄嘚给解释解释哈!
这是在网上找的一张图:我在上面标注了几个疑问点
问题描述:
如图所示,当用户访问系统1(简称:A)的时候,A发现用户没有登入,于是携带A的地址跳转到认证中心再次验证(这里所谓的跳转我理解应该是请求认证中心的验证接口吧!),发现真的是没有登入。所以跳转到登入页面(网上很多人说这个登入页面是认证中心的统一登入页面,但是我参照天猫、淘宝的登入,发现登入页面是他们各自的页面,只是提交数据的form表单的action请求地址是一样的)。
问题1: 为什么在登入界面提交了用户登入的数据到认证中心后,认证中心创建了全局会话(应该是认证中心创建的session吧,)、创建授权令牌,然后携带令牌跳转到系统1,系统1为什么还要携带令牌到认证中心再次认证一次呢?
问题2:用户在系统1上登入过了,此时当用户访问系统2时,系统2发现没有登入,于是携带系统2的地址跳转到认证中心验证,发现该用户已经登入了。我想问的是,为什么认证中心会知道用户已经登入了。在序号3(我标记的序号)位置,系统2跳转到认证中心,并没有携带什么数据,认证中心怎么会知道,访问系统2的这个用户已经登入了
问题1:假如用户伪造一个令牌,请求系统1。 而系统1不去认证中心校验,怎么知道是否是合法的?
问题2:会话机制。登录后信息放到Cookie里,此后浏览器向同一个域名发请求时,会自动带上的,不需要在代码里实现。你可以打开浏览器调试,自己观察一下。