1.什么是OAuth
OAuth官网介绍是这样的:
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。
2.常见使用场景
举个例子,我们常见的微信授权登录,当我们下载了一款App(假设是Keep,我正在用的一个健身App),但我们懒得去注册新的账号,而我们又要使用该App的功能,如果该App提供了支持微信登录的“懒人”功能,那么你可以直接点击微信授权登录。那这么做有什么利弊呢? 第一:很显然,对客户来说,省去了注册的时间,更加方便,而且在微信已授权列表中,可以随意取消对该App的授权。 第二:对App来说,可以依赖社交账号,迅速发展用户,且可以采集该用户的一些信息(个人认为,某音这方面采集分析的有点过分了)
3.OAuth登录原理
先了解下OAuth中出现的几个名词:
- 1.
Provider
:服务提供商。 - 2.
Resource Owner
:资源所有者。 - 3.
Third-Party Client
:第三方应用。
上述例子中,keep就是第三方应用
,而微信就是服务提供商
,客户就是资源所有者
用一个简单的流程图来描述下OAuth的登录流程:
4.授权模式
OAuth协议中的授权模式包括:授权码模式(authorization code), 简化模式(implicit),密码模式(resoure owner password credentials),客户端模式(client credentials)。 简化模式和客户端模式用的相对来说比较少,现在比较流行的都是使用授权码模式,也是我们学习的重点。
4.1 授权码模式
使用授权码模式时,第三方应用会将用户导向认证服务器,用户同意授权的动作会在认证服务器上完成。授权完毕之后,认证服务器会将用户重新导向至第三方应用,并且携带授权码,第三方应用收到授权码之后,再使用授权码向认证服务器申请令牌,如果认证服务器确认该授权码无误后,则会向第三方应用分配一个令牌。第三方应用再使用该令牌访问用户在资源服务器中的资源。流程图如下:
5. 总结
该篇文章主要是介绍一些有关OAuth协议的基本知识和认证原理,其中重点要了解的是OAuth中的授权码模式,目前大多数主流应用安全认证都是使用该模式。因为该模式相对于其他模式来说,流程是最完善、最安全的。如您看到该文后,有更好的资料可以在文章下方评论分享。感谢您的观看!