Unity3d_空間共享插件_認證方式Oauth2.0

1     Oauth2.0 三種類型的認證方式

 

1、  web網站認證

用戶從第三方web site頁面,302跳轉至賬號中心

輸入參數:appkey、回跳地址、認證類型

https://account.aliyun.com/oauth/authorize?oauth_consumer_key=YOUR_APP_KEY&oauth_callback=YOUR_CALLBACK_URL&response_type=code

 

用戶在賬號中心登陸授權後,跳回第三方web站點

返回參數:授權臨時code

https://www.aliyun.com/oauth_callback?code=CODE_GENERATE_BY_ACCOUNT


第三方web server調用賬號中心api,換取accessToken

輸入參數:授權臨時codeappkey, appsec,回調地址,授權類型

返回參數:accessToken, refreshToken, expireTime

https://account.aliyun.com/oauth/access_token?code=CODE_GET_BEFORE&grant_type=authorization_code&oauth_consumer_key=YOUR_APP_KEY&oauth_consumer_secret=YOUR_APP_SEC&oauth_callback=YOUR_CALLBACK_URL


第三方web server使用accessToken調用賬號中心api

輸入參數:accessToken

返回參數:業務數據

https://account.aliyun.com/openapi/id/load?oauth_token=YOUR_ACCESS_TOKEN



 

2、  Javascript Client認證 (ImplicitGrant)

從第三方網站頁面302跳轉至賬號中心授權頁面

輸入參數:appkey,回調地址,認證類型

https://account.aliyun.com/oauth/authorize?oauth_consumer_key=YOUR_APP_KEY&oauth_callback=YOUR_CALLBACK_URL&response_type=token


賬號中心直接帶上accessToken回跳第三方網站

輸出參數:accessToken, expireTime

https://www.aliyun.com/oauth_callback#oauth_token=ACCESS_TOKEN&expires_in=EXPIRE_TIME


Javascript程序獲取accessToken,調用賬號中心API

var token = window.location.hash;

var script = document.createElement(‘script’);

script.src = ‘https://account.aliyun.com/openapi/id/load?oauth_token=’ + token;

document.body.appendChild(script);

返回jsonp格式response,例如: var data = {‘v1’:’xx’}

 


3、  用戶名密碼認證

 

第三方web server調用賬號中心API,獲取accessToken

輸入參數:用戶名、密碼、appkeyappSec、認證類型

輸出參數:accessTokenexpireTimerefreshToken

https://account.aliyun.com/oauth/[email protected]&password=XXXX&oauth_consumer_key=APP_KEY&oauth_consumer_secret=APP_SEC&grant_type=password


第三方web server使用accessToken調用賬號中心API

輸入參數:accessToken

返回參數:業務數據

https://account.aliyun.com/openapi/id/load?oauth_token=YOUR_ACCESS_TOKEN


2     各家廠商的oauth2.0實現,有所不同

 

 

新浪微博

人人網

淘寶

騰訊微博

web網站認證

支持

支持

支持

支持

js client認證

支持

支持

支持

支持

用戶名密碼認證

支持

支持

不支持

不支持

refresh token

不支持

支持

支持

支持

oauth api通道

https

https

https

https

open api 通道

https

http

https

https

調用API需要簽名

不用

需要

不用

不用

 

3     oauth2.0的變化

2.0繼續沿用oauth核心理念,就是用戶只能在資源所在站點輸入用戶名密碼,任何第三方站點是無權獲取用戶密碼的。

最本質的變化是從oauth1.0走http協議到oauth2.0的https協議,從而導致了認證應用和用戶授權的方式改變,體現在API調用中oauth協議參數上。

附加改變是增加支持了oauth1.0中沒有涉及的客戶端場景:純頁面js腳本、純客戶端。

 

具體要點:

1、2.0只支持https通道,參數更簡潔。省去了oauth_timestamp,oauth_nonce參數。這兩個參數在1.0協議中,主要用於防止重放攻擊,而https下不存在這個問題。

2、調用API時省去了複雜的簽名算法。在2.0中,因爲走https通道,accessToken, appKey, appSec在調用API時,是可以直接作爲參數傳遞給server端的。因此無需通過複雜的簽名算法保證appSec和tokenSec的保密性。

3、AccessToken Refresh機制:因爲在調用OpenAPI時,accessToken是作爲參數傳遞調用的,爲了安全起見,對其做了失效處理。失效後,拿refreshToken重新獲取有效的accessToken。RefreshToken是用戶認證後,server對server獲取的值,不會在網絡上傳輸,具有一定的保密性和可靠性。

4、固定callback:應用註冊時,會告之固定的一個callbackURL,不可變。在oauth的任意步驟中,需要回跳第三方服務器時,一定是回跳到當初註冊的那個地址去的。增加了安全性。

 

 

 

 6     各個廠商API認證方式

淘寶TOP

同時支持兩種認證方式

http通道:TOP認證(將由oauth2.0取代)1

https通道:oauth2.0

新浪微博

同時支持oauth1.0和2.0。

但是在弱化1.0版本(網站上已經沒有1.0版本文檔的明顯入口了),部分新接口只支持2.0版本oauth認證,且提供接口/oauth2/get_oauth2_token將oauth1.0的token換成2.0的token

但是weibo 的oauth2.0沒有refresh token的概念,accessToken失效後,用戶必須重新授權。過期時間根據應用級別,從7天到90天不等。

人人

基於oauth2.0上,自己的一套認證邏輯

通過oauth2.0協議方法,獲取用戶的accessToken授權

在調用API時,accessToken作爲參數傳遞,並且需要用appSec對整串參數做MD5簽名

走oauth2.0認證的接口,都是https通道

而API調用通道,都是http,所以仍然需要appSec簽名

騰訊QQ

同時支持oauth1.0和2.0,還有自定義的OpenID&OpenKey鑑權

oauth協議1.0和2.0都支持的比較規範

附帶的,通過在用戶登錄授權後,會額外返回OpenID&OpenKey參數,標識用戶的ID和密鑰,通過OpenKey做簽名算法也可以訪問API

 

注1:TOP認證是類似於oauth1.0的認證,需要302跳轉到taobao.com進行用戶登陸授權,獲取sessionKey,接着用appSec+sessionKey進行API參數的md5|hmac算法簽名調用API。並且TOP認證加入了oauth2.0中的refresh token概念,sessionKey是有生命期的,可以通過refreshToken去延長生命期

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章