歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> XAuth——Android客戶端授權認證

XAuth——Android客戶端授權認證

日期:2017/3/1 10:38:27   编辑:Linux編程

xAuth認證實際上是OAuth認證的簡化版。目前xAuth只對桌面客戶端和移動客戶端開放申請。Web應用請使用OAuth。xAuth旨在增強客戶端的用戶體驗,減少頁面跳轉次數。采用xAuth認證的桌面應用和移動應用可以跳過oauth/request_token(獲取Request Token)以及oauth/authorize(授權Request Token)兩步,只要提供了username和password以後,即可直接通過oauth/access_token接口得到Access Token。然後通過這個Access Token獲取數據。

xAuth的缺點是將用戶名和密碼暴露給了第三方應用,所以xAuth協議只適用於開放平台特殊授權的應用,也就是說,只有當開放平台完全信任這個應用的時候才會給客戶端xAuth驗證的權限。

1.構造BaseString

* x_auth_username: 用戶名(即用戶在新浪通行證中使用的郵箱。)

* x_auth_password: 密碼

* x_auth_mode: 標識字段,這裡必須是"client_auth"。

* oauth_consumer_key: 創建應用時生成的APP KEY。

* oauth_signature_method: 簽名方法,建議使用“HMAC-SHA1”。

* oauth_timestamp: 時間戳。生成Base String時的時間戳。

* oauth_nonce: 單次值,一個隨機字符串,防止重復攻擊。

* oauth_version : OAuth協議版本。填寫“1.0”。

生成BaseString 如下所示:

POST&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Faccess_token&oauth_consumer_key%3D1852823608%26oauth_nonce%3D-794036333%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1291944694%26oauth_version%3D1.0%26source%3D1852823608%26x_auth_mode%3Dclient_auth%26x_auth_password%3D------%26x_auth_username%3D---------%2540sina.cn

其中 :%2540sina.cn [email protected]

2.用剛剛生成的BaseString,經過HMAC-SHA1算法生成oauth_signature,示例如下:

iviIHhwXWmFLliZbeDoSyQ+XC1o=

3.將以下參數封裝成HTTP請求頭,並向oauth/access_token接口提交POST請求:

x_auth_username: 用戶名(即用戶在新浪通行證中使用的郵箱。)

x_auth_password: 密碼

x_auth_mode: 標識字段,這裡必須是"client_auth"。

oauth_consumer_key: 創建應用時生成的APP KEY。

oauth_signature_method: 簽名方法,建議使用“HMAC-SHA1”。

oauth_timestamp: 時間戳。生成Base String時的時間戳。

oauth_nonce: 單次值,一個隨機字符串,防止重復攻擊。該參數只支持ASCII碼的字符串.

oauth_version : OAuth協議版本。填寫“1.0”。

oauth_signature: 簽名值,是由根據上面的幾個參數生成的 Base String經HMAC-SHA1算法計算得出。

OAuth

oauth_consumer_key="1852823608",

oauth_signature_method="HMAC-SHA1",

oauth_timestamp="1291944694",

oauth_nonce="-794036333",

oauth_version="1.0",

oauth_signature="iviIHhwXWmFLliZbeDoSyQ%2BXC1o%3D",

source="1852823608",

x_auth_mode="client_auth",

x_auth_password="------",

[email protected]

4.得到的返回結果示例如下:

oauth_token=160e537d530fd105669fd79a4f1dc286&oauth_token_secret=a9c46c081842bd08f55e8f0265d8fea3&user_id=160984721

將返回結果按"&"拆開,oauth_token的值即為access_token。

至此,以後每次用Access Token 去請求數據~

此文根據新浪開放平台XAuth的內容進行整理~

Copyright © Linux教程網 All Rights Reserved