单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的。

也就是说,SSSO是一个认证规则,它允许用户使用同一个ID登录不同的系统。

Android开发单点登录 安卓单点登录_SSO


我们通过上面的图来说一下SSO的流程:

Step1:
用户访问Gmail,Gmail发现用户还没登陆过,于是将用户重定向到SSO认证服务器,SSO认证服务器同样也会发现用户还没登陆。
用户被带到一个SSO登录页面,用户可以在这个页面上输入认证信息。
Step2-3:
SSO认证服务器校验用户输入的认证信息,然后会给用户创建Global Session,另外还会创建一个Token。
Step4-7:
Gmail会去SSO认证服务器上校验这个token,SSO认证服务器会登记Gmail,然后返回“valid”。接着Gmail会将受保护的资源返回给用户。
Step8:
用户此时从Gmail再去到另一个属于Google的网站,比如Youtube。
Step9-10:
Youtube发现用户并没有登录过,于是会向SSO认证服务器请求认证。SSO认证服务器发现用户已经登陆过,并且将Token也返回回去。
Step11-14:
Youtube同样会去SSO认证服务器上校验这个Token。SSO认证服务器会将Youtube的登记,并且返回“valid”给Youtube,Youtube接下来就会将受保护的资源返回给用户。