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
具體客戶端和伺服器端操作說明:
1註冊元件
secret是第三方元件用來加密或其他處理的金鑰(這個資訊只有第三方應用和伺服器端有)
2客戶端請求未授權的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...