单点登录SSO:
全称Single Sign On,简称就是SSO
在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统
同域名下的SSO:
一个企业一般情况下只有一个域名,通过二级域名区分不同的系统。
以京东为例:
这是jd的主页: jd.com
这是jd的帮助中心服务 help.jd.com
这是京东会员页面: vip.jd.com
sso登录以后,可以将Cookie的域设置为顶域,即.a.com,这样所有子域的系统都可以访问到顶域的cookie。我们在设置cookie时,只能设置顶域和自己的域,不能设置其他的域。这样就能解决cookie的问题
我们再来看看session的问题。我们在sso系统登录了,这时再访问app1, Cookie也带到了app1的服务端(Server),app1的服务端怎么找到这个Cookie对应的Session呢?这 里就要把3个系统的Session共享,如图所示。共享Session的解决方案有很多,例如:SpringSession。 这样第2个问题也解决了。
基于token的认证
就是解决不同域名下的单点登录
最近几年由于单页app、web APIs等的兴起,基于token的身份验证开始流行。当我们谈到利用token进行认证,我们一般说的就是利用JSON Web Tokens(JWTs)进行认证。虽然有不同的方式来实现
token,事实上,JWTs 已成为标准。因此在本文中将互换token与JWTs。 基于token的身份验证是无状态的,服务器不需要记录哪些用户已经登录或者哪些JWTs已经处理。每个 发送到服务器的请求都会带上一个token,服务器利用这个token检查确认请求的真实性。 这里可以把token理解成一张演唱会的门票。服务器(演唱会主办方)每次只需要检查你这张门票的有效 性,不需要知道你这张门票是在哪里买的,从谁买的,什么时候买的等等。不同等级的门票可以坐的位置不同,同样的,权限不同的用户可以进行的操作也不同。