OAuth官网介绍是这样的:web
An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.安全
翻译过来就是:服务器
容许Web,移动端和桌面应用程序在一个简单、标准的方法中进行安全受权的开放协议微信
OAuth(开放受权)是一个开放标准,容许用户让第三方应用访问该用户在某一网站(应用)上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 咱们如今常说的OAuth协议通常指的是OAuth2.0,目前大多数互联网公司开放API接口都基本上都支持OAuth2.0。app
举个例子,咱们常见的微信受权登陆,当咱们下载了一款App(假设是Keep,我正在用的一个健身App),但咱们懒得去注册新的帐号,而咱们又要使用该App的功能,若是该App提供了支持微信登陆的“懒人”功能,那么你能够直接点击微信受权登陆。那这么作有什么利弊呢? 第一:很显然,对客户来讲,省去了注册的时间,更加方便,并且在微信已受权列表中,能够随意取消对该App的受权。 第二:对App来讲,能够依赖社交帐号,迅速发展用户,且能够采集该用户的一些信息(我的认为,某音这方面采集分析的有点过度了)ide
先了解下OAuth中出现的几个名词:学习
Provider
:服务提供商。Resource Owner
:资源全部者。Third-Party Client
:第三方应用。上述例子中,keep就是第三方应用
,而微信就是服务提供商
,客户就是资源全部者
用一个简单的流程图来描述下OAuth的登陆流程:网站
OAuth协议中的受权模式包括:受权码模式(authorization code), 简化模式(implicit),密码模式(resoure owner password credentials),客户端模式(client credentials)。 简化模式和客户端模式用的相对来讲比较少,如今比较流行的都是使用受权码模式,也是咱们学习的重点。翻译
使用受权码模式时,第三方应用会将用户导向认证服务器,用户赞成受权的动做会在认证服务器上完成。受权完毕以后,认证服务器会将用户从新导向至第三方应用,而且携带受权码,第三方应用收到受权码以后,再使用受权码向认证服务器申请令牌,若是认证服务器确认该受权码无误后,则会向第三方应用分配一个令牌。第三方应用再使用该令牌访问用户在资源服务器中的资源。流程图以下: code
该篇文章主要是介绍一些有关OAuth协议的基本知识和认证原理,其中重点要了解的是OAuth中的受权码模式,目前大多数主流应用安全认证都是使用该模式。由于该模式相对于其余模式来讲,流程是最完善、最安全的。如您看到该文后,有更好的资料能够在文章下方评论分享。感谢您的观看!