OAuth 2 实现单点登录,通俗易懂!
多点登录
传统的多点登录系统中,每个站点都实现了本站专用的帐号数据库和登录模块
。各站点的登录状态相互不认可,各站点需要逐一手工登录。如下图,有两个
术语含义如下:
认证(authentication): 验证用户的身份;
授权(authorization): 验证用户的访问权限。
单点登录
单点登录,英文是 Single Sign On,缩写为
SSO。多个站点(192.168.1.20X)共用一台认证授权服务器(192.168.1.110,
用户数据库和认证授权模块共用)。
用户经由其中任何一个站点(比如
192.168.1.201)登录后,可以免登录访问其他所有站点。而且,各站点间可以
通过该登录状态直接交互。
OAuth2认证授权的原理流程
生活实例【★★重点★★】
为了直观的理解 OAuth2.0 原理流程,我们假设这样一个生活场景:
(1)档案局A(客户端 /
Client):以“档案局ID/密码”标识,是掌握档案资源的机构。并列还有很多档
案局B/C/…,每个档案局存储的档案内容(资源 /
Resource)不一样,比如政治、经济、军事、文化等;
(2)公民张三(资源所有者 / Resource
Owner):以“用户名/密码”标识,需要到各个档案局查档案;
(3)派出所(授权服务器 / Authentication
Server):可以是单个巨大的派出所,也可以是数据共享的派出所集群,掌管
的信息、提供的对外接口功能有:
档案局信息:所有档案局的“档案局ID/密码”,证明档案局的身份;
公民信息:所有公民的“用户名/密码”,能提供张三是张三的用户身份证明(认
证 / Authentication)
公民对于档案局的权限:有张公民和档案局的权限的映射表,可查得各公民对
各档案局是否有操作权限(授权 /
Authorization)。通常,设计中会增加官职(角色 /
Role)一层,各公民属于哪个官职(角色),哪个官职(角色)对于特定档案局有操
作权限。
张三首次访问档案局A
张三之前从未到访档案局,第一次来档案局。对照下图序号理解:
(1)张三来到“档案局A”的“档案处”,该处要求实名登记后才能查询,被指示到“
用户登记处”办理(HTTP重定向);
(2)张三来到“档案局A”的“用户登记处”,既不能证明身份(认证),又不能证明自
己有查档案A的权限(授权)。张三携带档案局A的标识(client-
id),被重定向至“授权信开具处”;
(3)张三来到“派出所”的“授权信开具处”,出示档案局A的标识,希望开具授权
信(授权)。该处要求首先证明身份(认证),被重定向至“用户身份验证处”;
(4)张三来到“派出所”的“用户身份验证处”,领取了用户身份表(网页登录表单
Form);
(5)张三填上自己的用户名和密码,交给(提交 /
Submit)“用户身份验证处”,该处从私用数据库中查得用户名密码匹配,确定
此人是张三,开具身份证明信,完成 认证。张三带上身份证明信和档案局A的
标识,被重定向至“授权信开具处”;