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相關問題

相關文章
相關標籤/搜索