OAuth2 诞生背景
在传统的客户端-服务端模型中,第三方应用如何查询和操作服务端的受保护的资源是一个问题
简单举几个例子,用户浏览一个网站,想要在其网站上留言,往往需要进行注册登录操作,由于流程过于复杂,提高了用户的操作成本.再比如说第三方机构想要在用户许可后获得其信用积分,或者在其社交平台上发布消息.显然用户不能直接在第三方机构上输入用户信息.Oauth的诞生可以解决上述两个问题.第一个问题本质上就是第三方应用查询用户信息功能,只需要确认该用户存在,该第三方用户就承认该用户注册成功.第二个问题显然是第三方机构操作服务端受保护的资源的例子.
OAuth2 角色设定
Oauth2定义了4种角色
resource owner 资源拥有者
指的是一个可以授权访问被保护资源的个体,例如一个个实体用户,他们的用户信息就是资源。
resource server 资源服务器
指的是用来托管受保护的资源,例如某个具体具体服务模块
client 客户端
指的是利用资源拥有者的授权信息去请求被保护的资源的各种第三方服务,例如第三方服务机构
authorization server 授权服务器
在资源拥有者授权后,向客户端授权(颁发 access,tokens)的服务器,例如支付宝验证登陆
资源服务器与授权服务器之间的交互是属于被访问者自己内部的事情,资源服务器与授权服务器可以是同一个。对于支付宝来说,一个授权服务器,可以向多个资源服务器颁发acess token服务
OAuth2 授权流程
step 1:客户端预先在授权服务器上注册,获得app_id
step 2:资源拥有者向客户端请求访问
step 3:客户端需要对该资源拥有者进行身份验证,遂重定向至授权服务器
step 4:在授权服务器上,资源拥有者同意给予客户端授权A