OAuth 2.0
OAuth是什么东东
OAuth 是Open Authorization简写
OAuth协议主要适用于 针对个人用户对资源的开放授权,比如Google的用户Alice。OAuth的特点是“现场授权”或“在线授权”:客户端主要通过浏览器去访问资源,授 权时需要认证Alice的资源所有者身份,并且需要Alice现场审批。OAuth一般在SNS服务中广泛使用,如微博。IAM服务则不同,它的特点是 “预先授权”或“离线授权”:客户端主要通过REST API方式去访问资源,资源所有者可以预先知道第三方应用所需要的资源请求,一次授权之后,很少会变更。IAM服务一般在云计算服务中使用,如AWS服 务、阿里云计算服务。
OAuth 2.0 是目前比较流行的做法,它率先被Google, Yahoo, Microsoft, Facebook等使用。之所以标注为 2.0,是因为最初有一个1.0协议,但这个1.0协议被弄得太复杂,易用性差,所以没有得到普及。2.0是一个新的设计,协议简单清晰,但它并不兼容 1.0,可以说与1.0没什么关系。所以,我就只介绍2.0。**
OAuth2的验证流程
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
OAuth2服务提供
实现方案https://github.com/favccxx/FavOAuth2
相关的API
OAuth2的authorize接口
示例:http://open.weibo.com/wiki/Oauth2/authorize
参数名 | 说明 |
---|---|
client_id | 申请应用时分配的AppKey |
redirect_uri | 授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。 |
scope | 申请scope权限所需参数,可一次申请多个scope权限,用逗号分隔,其实就是一个业务字段 |
state | 用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。这个参数可用于防止跨站请求伪造(CSRF)攻击 |
display | 授权页面的终端类型,例如default ,mobile ,wap ,client ,apponweibo |
注意 这个里面有个关键点是认证服务器需要认证client_id 和 redirect_uri
WeiboX