何须浅碧轻红色
自是花中第一流
OAuth
OAuth 1.0
OAuth (Open Authorization) 是一个开放标准,允许用户授权第三方应用访问其私有资源,但无需将用户名和密码提供给第三方应用。都不用设想,如果一个第三方应用的服务,需要访问你其他地方的资源,其获取资源的时候却要你提供用户名和密码,那你铁定会慎重考虑一番。毕竟将用户名和密码全都交给第三方之后,它将会获得你在某个地方的所有权限,天知道它会干什么违法乱纪的事!因此,需要在不提供敏感信息的情况下,对第三方应用进行有限制的部分授权,这就是OAuth诞生的背景。
下面是一个典型的OAuth工作场景,有资源请求者、资源提供者、资源所有者典型三方。
如图,一次完整的OAuth流程如下:
- 消费者向服务提供者请求request token
- 服务提供者授予消费者request token (unauthorized)
- 消费者请求定向到资源拥有者
- 资源所有者对消费者授权,并将授权信息告知服务提供者,此时request token (authorized)
- 消费者请求凭借request token (authorized)向服务提供者请求access token
- 服务提供者提供access token
- 消费者凭借access token访问资源所有者授权其访问的资源
Tips:本质上是利用request token
换取access token
,request token生命周期短,access token一般来说生命周期较长,当然用户可以随时撤销授权
安全漏洞:
攻击者伪造request token,诱使用户进行授权,之后或通过设置回调地址获(回调方式),或抢先粘贴request token(非回调方式),来获取access token
OAuth 2.0
由于OAuth 1.0存在两个主要缺点——1. 签名算法过于复杂 2. 授权流程单一,因此催生了OAuth 2.0。在此版本中,将原来的3个参与者拓展为4个参与者(拆分service provider为authorization server和resource server),大概流程如下:
OAuth 2.0 改变:
- 改签名为ssl来保证信息传输安全性
- 提供四种授权方式以供选择:
- Authorization Code
- Implicit
- Resource Owner Password Credentials
- Client Credentials
Others
OpenId and OAuth
- OpenId主认证(Authentication),是探究你是谁
- OAuth主授权(Authorization),是探究你能做什么