apigw鉴权分析(1-4)新浪微博开放平台 - 鉴权分析

1、访问入口

 http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8Ephp

微博开放接口的调用,如发微博、关注等,都是须要获取用户身份认证的。android

目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。ios

另外,为了方便开发者开发、测试本身的应用,咱们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者本身调用接口。git

 

OAuth2.0概述

OAuth2.0较1.0相比,整个受权验证流程更简单更安全,也是将来最主要的用户身份验证和受权方式。github


关于OAuth2.0协议的受权流程能够参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是咱们的受权服务器,Resource Server是API服务器。web

 

开发者能够先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,而后咱们根据应用场景各自说明如何使用OAuth2.0。api

 

新版受权页改变了以前页面信息元素过多,对用户使用带来干扰的问题,登陆和受权这两个行为已在新版中分离,用户可以更好地理解账号登陆和受权的过程,也为将来更多的功能带来承载空间。安全


当前一个最完整的受权分为三个步骤:登陆-普通受权-高级受权(SCOPE)。但这三个步骤并非必然出现,当用户的微博处于登陆状态时,页面会自动跳转到普通受权页,“高级受权”一样也不是必须,若是开发者不申请SCOPE权限,系统会自动跳过此步骤,回调应用。咱们在灰度测试中统计发现,只要合理的使用高级受权,开发者彻底没必要担忧增长操做所带来的页面流失率问题,相反,一个清晰的受权体验更能获取用户的信任。服务器


与此同时,受权项将会变的更加有条理,以前的普通权限将做为基础服务,用户再也不有感知,与用户隐私相关的会归到高级受权,用户在受权时有权利逐条取消,进一步加强了隐私控制。app

开发者须要根据各自的应用场景,选择适用的OAuth2.0受权流程:

 

    • 一、PC端和Web网站,请参考:Web网站的验证受权(Authorization Code)
    • 二、移动端应用可直接使用官方移动SDK,经过呼起微博客户端(未安装微博客户端的会呼起H5受权页)方式受权
    • 三、H5轻应用,请参考 轻应用开发指南

2、鉴权方式分析

一、web应用受权

 

二、手机应用受权

三、受权的有效期

四、使用OAuth2.0调用API

 

3、分解结论

 

4、其余信息

OAuth2.0相关资源

如下SDK包含了OAuth2.0及新版API接口

     
下载Android SDK 下载iOS SDK 下载WP7 SDK
下载PHP SDK(由SAE维护) 下载Java SDK 下载Python SDK
下载Flash SDK 下载Javascript SDK 下载C# SDK

 

移动开发SDK说明文档

     
Android SDK 说明文档 iOS SDK 说明文档 WP7 SDK 说明文档

 

其余参考资料

OAuth是一种国际通用的受权方式, OAuth2.0的官方技术说明可参看 http://oauth.net/2/


若是你仍在使用Oauth1.0,请进入浏览相关文档。

 

OAuth2.0 错误码

微博OAuth2.0实现中,受权服务器在接收到验证受权请求时,会按照OAuth2.0协议对本请求的请求头部、请求参数进行检验,若请求不合法或验证未经过,受权服务器会返回相应的错误信息,包含如下几个参数:

  • error: 错误码
  • error_code: 错误的内部编号
  • error_description: 错误的描述信息
  • error_url: 可读的网页URI,带有关于错误的信息,用于为终端用户提供与错误有关的额外信息。


错误信息的返回方式有两种:

1. 当请求受权Endpoint:https://api.weibo.com/2/oauth2/authorize 时出现错误,返回方式是:跳转到redirect_uri,并在uri 的query parameter中附带错误的描述信息。

2. 当请求access token endpoing:https://api.weibo.com/oauth2/access_token 时出现错误,返回方式:返回JSON文本。例如:

 

JSON
1
2
3
4
5
{
     "error" "unsupported_response_type" ,
     "error_code" : 21329,
     "error_description" "不支持的ResponseType."
}


OAuth2.0错误响应中的错误码定义以下表所示:

 

错误码(error) 错误编号(error_code) 错误描述(error_description)
redirect_uri_mismatch 21322 重定向地址不匹配
invalid_request 21323 请求不合法
invalid_client 21324 client_id或client_secret参数无效
invalid_grant 21325 提供的Access Grant是无效的、过时的或已撤销的
unauthorized_client 21326 客户端没有权限
expired_token 21327 token过时
unsupported_grant_type 21328 不支持的 GrantType
unsupported_response_type 21329 不支持的 ResponseType
access_denied 21330 用户或受权服务器拒绝授予数据访问权限
temporarily_unavailable 21331 服务暂时没法访问
appkey permission denied 21337 应用权限不足


OAuth2.0相关问题,查看 OAuth2.0相关问题

相关文章
相关标签/搜索