一、概述
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,用户只需一次登录就可以访问所有相互信任的应用系统。比如我们登录了公司的OA系统之后,在页面上点击邮件系统,则无需再跳转到邮件的登录页面,点过去就直接登录成功了。
OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。
二、区别
单点登录需要一个SSO认证系统用来登录,保存用户的登录信息;比如现在有系统A和系统B,首先访问系统A,发现未登录,那么跳转到 SSO 认证系统来登录,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权。子系统拿到令牌后,向SSO认证系统验证令牌的真伪,通过后,使用该令牌创建与用户的会话,key为用户字段,值为token,称为局部会话,返回受保护资源。系统B访问时,发现未登录,跳转到认证中心,认证中心发现已经登录,返回令牌,系统B拿到令牌后,验证真伪,通过后,创建会话,返回受保护资源。
OAuth 2.0的运行流程:
(A)用户在浏览器打开京东商城,选择第三方微信登录,京东商城请求微信开放平台要求用户给予授权(目前是用户使用微信扫码)
(B)用户扫码后,微信开放平台会返回一个code
给京东商城。
(C)京东商城使用上一步获得的授权code
和在微信开放平台申请的appid
、appsecret
等信息,向微信开放平台换取access_token
(D)微信开放平台认证通过后,返回access_token
(E)此时,京东商城可以通过拿到的 access_token
去 微信开放平台获取受保护的资源信息,如用户的手机号等
(F)微信开放平台验证access_token
正确后,返回手机号
(G)京东商城根据手机号判断是否注册过,注册过,直接登录成功;未注册过,在后台为其注册账号,前天显示登录成功。