開放平台 OAuth1 0

2021-09-22 14:14:42 字數 3826 閱讀 1773

oauth1.0簡介

oauth1.0是rfc制定的標準的第三方**/客戶端的認證服務

規範文件在:

**使用oauth的目的是不讓第三方開發者知道和記錄使用者的使用者名稱和賬號資訊,使用者在第三方應用登入服務的時候是在客戶端提供的登入頁面進行登入和驗證的。

下面以weibo的oauth1.0實現為例說明:

oauth認證分伺服器端和客戶端

客戶端的步驟是:

1 獲取未授權的request token

2 請求使用者授權request token

3 使用授權後的request token換取access token

伺服器端的步驟是:

1 發放未授權request_token

2 將使用者轉到本**的使用者登入頁

3 使用者登入成功後,返回授權後的request_token和憑證

4 發放最終可以使用的憑證access_token

具體客戶端和伺服器端操作說明:

註冊元件

secret是第三方元件用來加密或其他處理的金鑰(這個資訊只有第三方應用和伺服器端有)

客戶端請求未授權的requesttoken

介面:呼叫的引數

引數名 必選

介紹oauth_consumer_key

true

api 

key(

元件資訊中的值)

oauth_signature_method

true

簽名方法,暫只支援

hmac-sha1

oauth_signature

true

簽名值oauth_timestamp

true

時間戳,其值是距

1970 00:00:00 gmt

的秒數,必須是大於

0的整數

oauth_nonce

true

單次值,隨機生成的

32位字串(每次請求必須不同)

oauth_callback

true

認證成功後瀏覽器會被重定向到這個

url中

oauth_version

flase

版本號,如果填寫必須為

1.0

其中的引數說明

oauth_signature

是使用secret

進行簽名

oauth_callback

和oauth_timestamp

是為了放重放的

3伺服器端接收到request_token的未授權請求

應該有如下行為:

1 生成request_token和request_secret

2 在伺服器端記錄下生成的request_token和request_secret

3 返回request_token和request_secret

4客戶端接收到返回回來的request_token和request_secret,使用這兩個值來請求授權的request_token(即認證)

介面:

請求引數:

引數名 必選

意義oauth_token

true

上一步中獲得的未授權的

request token

5伺服器端收到認證請求

做如下操作:

1 將請求的oauth_token和伺服器端已存的oauth_token進行比較,正確執行2,錯誤返回異常

2 將客戶端(比如瀏覽器)轉到使用者在weibo上的認證頁面

6客戶端展示認證頁面提供給使用者登入認證

7使用者登入認證成功

8伺服器端等待使用者登入認證成功之後

1 生成request_token已驗證的憑證

oauth_verifier

2 將request_token和使用者id,應用id,驗證碼

oauth_verifier

進行對映,並儲存

3 返回給客戶端資訊:

引數名 必選

意義 oauth_token

true

使用者授權之後的

token

值,與未授權

token

值相同

oauth_verifier

true

驗證碼oauth_verifier是已驗證憑證

4 轉到使用者請求未授權request_token時請求的oauth_callback位址

(一般第二步和第三步是同時進行的,轉到的oauth_callback位址的同時傳遞結果)

9請求access_token

客戶端現在已經有了:

secret //元件申請時獲得

request_token//元件請求未授權request_token時獲得

request_secret//元件請求未授權request_token時獲得

oauth_veifier//元件請求授權request_token時獲得

將secret&request_secret作為加密的key對引數進行加密請求:

(這步是來請求可以直接使用的憑證access_token)

引數 引數名 必選

意義oauth_consumer_key

true

api 

key

oauth_token

true

第一步中獲得的

request token

oauth_signature_method

true

簽名方法,暫只支援

hmac-sha1

oauth_signature

true

簽名值,

(金鑰為:

oauth_timestamp

true

時間戳,

其值是距

1970 00:00:00 gmt

的秒數,必須是大於

0的整數

oauth_nonce

true

單次值,隨機生成的

32位字串,防止重放攻擊(每次請求必須不同)

oauth_verifier

true

上一步請求授權

request token

時返回的驗證碼

oauth_version

flase

版本號,如果填寫必須為

1.0

10伺服器端獲取到access_token的請求做如下操作:

1 校驗request_token是否正確且已經被授權過(校驗的內容有1 簽名2 oauth_verifier 3 oauth_token)

2 生成access_token和access_token_secret

3 將access_token,access_token_secret,使用者id,應用id進行對映,並存在伺服器資料庫(長期有效)

3 將access_token和access_token_secret返回

11客戶端使用access_token和access_token_secret進行其他介面的請求

參考文章:

開放平台 OAuth1 0

oauth1.0簡介 oauth1.0是rfc制定的標準的第三方 客戶端的認證服務 規範文件在 使用oauth的目的是不讓第三方開發者知道和記錄使用者的使用者名稱和賬號資訊,使用者在第三方應用登入服務的時候是在客戶端提供的登入頁面進行登入和驗證的。下面以weibo的oauth1.0實現為例說明 oa...

開放平台 OAuth1 0

oauth1.0簡介 oauth1.0是rfc制定的標準的第三方 客戶端的認證服務 規範文件在 使用oauth的目的是不讓第三方開發者知道和記錄使用者的使用者名稱和賬號資訊,使用者在第三方應用登入服務的時候是在客戶端提供的登入頁面進行登入和驗證的。下面以weibo的oauth1.0實現為例說明 oa...

開放平台 OAuth1 0

oauth1.0簡介 oauth1.0是rfc制定的標準的第三方 客戶端的認證服務 規範文件在 使用oauth的目的是不讓第三方開發者知道和記錄使用者的使用者名稱和賬號資訊,使用者在第三方應用登入服務的時候是在客戶端提供的登入頁面進行登入和驗證的。下面以weibo的oauth1.0實現為例說明 oa...