OAUTH2
OAuth2.0 是一个开放受权协议,经常使用于第三方服务的认证,其之于1.0更为简单,且更安全。api
基础概念
将服务上的用户数据安全的开放给第三方应用,其有两部分组成:安全
- 受权服务:用户对应用的受权及Token发放
- 资源服务:应用鉴权后的服务资源Api响应
受权模式
- 受权码受权模式(authorization code grant)
经过受权码的跳转工做流来签发Token
,这是目前微信公众号等各大开放平台服务中经常使用的方案
- 简化受权模式(implicit grant)
相似于受权码受权模式,可是简化掉了受权码交换的操做
- 密码受权模式(password grant)
密码受权模式方便于第一方客户端(手机应用等)直接经过帐号密码来交换Token
,不用像第三方客户端那样经过受权码跳转
- 客户端凭据受权模式(client credentials grant)
该模式并不是Auth的第三方受权解决方案
这里不存在用户角色,而是应用服务利用本身的客户端身份直接向认证服务器提请受权
认证服务器须要保存应用的Client ID、Client Secret等身份信息
经常使用于服务化架构系统中微服务间的api通讯
受权码受权模式
角色
整个流程中有四种角色:服务器
- 资源拥有者(Resource Owner)
- 资源服务器(Resource Server)
- 受权服务器(Authorization Server)
- 客户端(Client)
受权流程微信
- 客户端应用引导用户到受权服务页面
- 用户登陆并受权客户端应用获取某个
Scope
域中的用户资源信息
- 客户端应用得到一个受权码
- 客户端应用经过受权码向受权服务器请求access token
- 客户端应用经过access token向资源服务器请求
Scope
域中的资源信息