OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不 需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth2.0是OAuth协议的延续版本,但不向 后兼容OAuth 1.0即完全废止了OAuth1.0。很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服 务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准
Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。
参考:https://baike.baidu.com/item/oAuth/7153134?fr=aladdin
Oauth协议:https://tools.ietf.org/html/rfc6749
Oauth2的认证流程
- 流程图
引自OAauth2.0协议rfc6749 https://tools.ietf.org/html/rfc6749
-
概念:
-
客户端
本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源,比如:Android客户端、Web客户端(浏 览器端)、微信客户端等。
-
资源拥有者
通常为用户,也可以是应用程序,即该资源的拥有者。
-
授权服务器(也称认证服务器)
用于服务提供商对资源拥有的身份进行认证、对访问资源进行授权,认证成功后会给客户端发放令牌 (access_token),作为客户端访问资源服务器的凭据。l例如:微信的认证服务器、支付宝的认证服务器
-
资源服务器
存储资源的服务器,例如:微信、支付宝等包含用户信息服务器,可以通过认证服务器认证之后,通过access_token获取微信、支付宝保存的用户信息
-
Oauth2的四种模式
授权码模式
简单来讲就是经过用户授权之后获取code,然后通过code到认证服务器获取access_otken
-
认证流程