理解OAuth 2.0
OAuth 2.0的作用
- 用于第三方的安全认证。(第三方登入像QQ登入王者)
大厂大多都有OAuth 2.0的接口,具体查看相应的开发平台
OAuth 2.0 的名词(以微信登入百度举例)
(1) Third-party application(百度):第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。
(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商"。
(3)Resource Owner(客户:一个人):资源所有者,本文中又称"用户"(user)。
(4)User Agent(浏览器):用户代理,本文中就是指浏览器。
(5)Authorization server(这是微信的认证服务器):认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server(微信的资源服务器):资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。
OAuth关键思路
主要是为了取得Token令牌(相当于许可证),
流程图
理解
(A)用户打开客户端(百度)以后,客户端要求用户给予授权。(第三方登入弹出要用微信二维码)
(B)用户同意给予客户端(百度)授权。(微信手机同意登入)
(C)客户端(百度)使用上一步获得的授权,向认证服务器申请令牌。(向这是向微信的认证服务器发出请求的报文)
(D)认证服务器对客户端(百度)进行认证以后,确认无误,同意发放令牌(token)。(向这是微信的认证服务器发出返回报文)
(E)客户端(百度)使用令牌,向资源服务(微信的资源服务器)器申请获取资源。(这也是一个请求报文)
(F)资源服务器(微信的资源服务器)确认令牌无误,同意向客户端(百度)开放资源。(返回报文,返回报文携带着用户的资源信息)
客户端的授权模式
客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。
复杂程度不断减小,即对第三方应用的信任不断增加,速度也会提高
- 授权码模式(authorization code)
- 简化模式(implicit)
- 密码模式(resource owner password credentials)
- 客户端模式(client credentials)