日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

OAuth授权验证说明

發布時間:2023/12/13 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 OAuth授权验证说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OAuth授權驗證說明

1.1. OAuth介紹

OAuth (開放授權) 是一個開放標準,允許用戶授權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不需要將用戶名和密碼提供給第三方網站或分享他們數據的所有內容。為了保護凡客用戶的數據,所有第三方應用都需要通過OAuth認證機制來獲得用戶的授權。本文檔提供了凡客開放平臺OAuth認證的相關信息。

凡客開放平臺API采用OAuth協議為第三方提供接入服務,有關OAuth認證的詳細說明,請閱讀官方OAuth規范。

-OAuth標準(英文) http://oauth.net/

-OAuth維基百科(中文) http://zh.wikipedia.org/zh/OAuth

凡客開放平臺API使用OAuth 1.0a版本。

Web應用、桌面應用和手機應用如何通過凡客開放平臺服務器認證這一過程就是OAuth協議的主要內容。這一過程中可以抽象出三個角色:Server(Service Provider),Client(Consumer), User(Resource Owner)。在凡客開放平臺中,這三個的角色(實例化后)是: 凡客開放平臺服務端,第三方應用,凡客用戶。

1.2. 使用說明

為了使用凡客開放平臺提供的API(應用程序接口),我們會給每一個應用一個專屬的oauth_consumer_key和oauth_consumer_ Secret。

OAuth的登錄認證流程及訪問資源流程

OAuth的注冊認證流程及訪問資源流程

OAuth定義的認證過程分三步:

1. Client從server獲取未授權的RequestToken

2. User授權Client獲取的RequestToken,client獲取oauth_verifier (授權碼)

3. Client以RequestToken和oauth_verifier從server獲取AccessToken,AccessTokenSecret,UserId,UserToken 在此過程中RequestToken是一個臨時性的東西。完成這三步后,RequestToken就失去價值了。另外RequestToken在一段時間內沒有使用,也會過期從而失效。而AccessToken是一個持久性的東西,它是user對client的授權憑證,會一直有效。Client只需要保存UserId,AccessToken(即oauth_token),AccessTokenSecret(即oauth_token_secret),其中UserId,AccessToken兩個參數是訪問需要用戶登錄授權API所需要傳入的參數值,而AccessTokenSecret是訪問需要用戶登錄授權API簽名時需要的值。

4、使用UserId,AccessToken訪問或修改受保護,需要用戶登錄授權的API。

認證過程中第一步和第三步發送的請求是需要簽名的。

請求簽名說明

所有請求和受保護的資源請求必須被簽名。簽名算法使用Signature Base String和密鑰(Secret)生成簽名。

說明

Signature Base String由以下三部分組成,各項之間使用&符號分隔。

1、Http Method

請求方法,GET/POST

2、URL Encode之后的請求URL(URL要小寫)

例如:

請求URL:http://oapi.vancl.com/oauthnew/request-token.ashx

經URL Encode之后的請求URL為:

http%3A%2F%2F oapi.vancl.com%2Foauthnew%2Frequest-token.ashx

3、URL Encode并排序之后的請求參數

例如: URL請求參數為:

oauth_callback=http%3A%2F%2Flocalhost%3A60001%2FDemoWeb%2Fdemo.aspx&oauth_consumer_key=de47ea4337b847e09a9489b43373c845&oauth_nonce=3c7fa628eb92441c8e8a2f8147a72193&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1321580558&oauth_version=1.0

經URL Encode并排序(如果參數名有重復則再按參數值進行重復項目排序)之后的請求參數格式如下(使用%3D替代=號,參數間使用%26(即&符號)分隔):

oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A60001%252FDemoWeb%252Fdemo.aspx%26oauth_consumer_key%3Dde47ea4337b847e09a9489b43373c845%26oauth_nonce%3D3c7fa628eb92441c8e8a2f8147a72193%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1321580558%26oauth_version%3D1.0

三部分拼接后即為Signature Base String的值,如下:

GET&http%3A%2F%2Foapi.vancl.com%2Foauthnew%2Frequest-token.ashx&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A60001%252FDemoWeb%252Fdemo.aspx%26oauth_consumer_key%3Dde47ea4337b847e09a9489b43373c845%26oauth_nonce%3D3c7fa628eb92441c8e8a2f8147a72193%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1321580558%26oauth_version%3D1.0

密鑰由oauth_consumer_secret和Request Token Secret組成(中間使用&符號分隔)。

第一步簽名密鑰為:oauth_consumer_secret;

第三步簽名密鑰為:oauth_consumer_secret &Request Token Secret;

1.3. OAuth認證流程簡介

1.3.1. 獲取未授權的request token

獲取request token是進行用戶認證的第一步。這一步主要有兩個目的:

第一,告訴凡客開放平臺你將要做什么

第二,告訴凡客開放平臺你在callback里要做什么

app發送HTTP GET請求到http://oapi.vancl.com/oauthnew/request-token.ashx獲取request_token 此時,app所擁有的信息只有: oauth_consumer_key和oauth_consumer_secret。oauth_consumer_key是app的唯一標識。要想去凡客開放平臺服務器請求token,必須告訴它是誰在請求,所以這個參數必須傳遞給服務器。oauth_consumer_secret是凡客開放平臺為每個app分配的用以進行機密數據交換的密鑰。(這是一個保密項,不要公開否則別人可能會冒你的名去發送請求),oauth_consumer_secret主要用來進行數據簽名。

請求參數

參數 意義
oauth_consumer_key 凡客開放平臺分配的應用的唯一KEY標記
oauth_signature_method 簽名方法, HMAC-SHA1 (固定)
oauth_signature 簽名值,密鑰為:oauth_consumer_secret。計算說明。
oauth_timestamp 時間戳, 其值是距1970 00:00:00 GMT的秒數,必須是大于0的整數
oauth_nonce 單次值,隨機生成的32位字符串,防止重放攻擊(每次請求必須不同)
oauth_callback 認證成功后瀏覽器會被重定向到這個url中
oauth_version 版本號, “1.0” (固定)

返回參數

參數 意義
oauth_token 未授權的Request Token
oauth_token_secret 對應的Request Token Secret
oauth_callback_confirmed 對oauth_callback的確認信號, 為true表示回調地址生效

說明:

用戶授權后web應用將會重定向到oauth_callback,此url必須以http://開頭。

時間戳與標準時間偏差不得大于8分鐘。

假如有一款應用:

oauth_consumer_key = “873786fd712936a3a1f3cc9b8b1a6b94”

oauth_consumer_secret = “3a58dd9023cf1adec08f0656acc5bf95”

示例

請求參數:

返回參數

參數名稱 參數值
oauth_consumer_key 873786fd712936a3a1f3cc9b8b1a6b94
oauth_signature oauth_signature為"7M1b9CG32KsclajAVXrHzPdE238="URI編碼后為"7M1b9CG32KsclajAVXrHzPdE238%3d
oauth_nonce 774d4d2fb95a49628bbd109a79139117
oauth_timestamp 1321582909
oauth_signature_method HMAC-SHA1
oauth_version 1.0
oauth_callback http%3A%2F%2Flocalhost%3A60001%2FDemoWeb%2Fdemo.aspx

Base string的生成

Base String GET&http%3A%2F%2Foapi.vancl.com%2Foauthnew%2Frequest-token.ashx&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A60001%252FDemoWeb%252Fdemo.aspx%26oauth_consumer_key%3D873786fd712936a3a1f3cc9b8b1a6b94%26oauth_nonce%3D774d4d2fb95a49628bbd109a79139117%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1321582909%26oauth_version%3D1.0

使用signing key(oauth_consumer_secret后加一個&符)生成oauth_signature:

signature 7M1b9CG32KsclajAVXrHzPdE238%3d

返回結果

參數名稱 參數值
oauth_token 1a6b213f81ef48b4b94524c2cfff50d0
oauth_token_secret 2c52bae787544992b20f21e01635ab67
oauth_callback_confirmed true

請求格式如下:

http://oapi.vancl.com/oauthnew/request-token.ashx?oauth_callback=http%3A%2F%2Flocalhost%3A60001%2FDemoWeb%2Fdemo.aspx&oauth_consumer_key=873786fd712936a3a1f3cc9b8b1a6b94&oauth_nonce=774d4d2fb95a49628bbd109a79139117&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1321582909&oauth_version=1.0&oauth_signature=7M1b9CG32KsclajAVXrHzPdE238%3d

當服務器端接到請求之后,會返回包含oauth_token,oauth_token_secret,oauth_callback_confirmed等內容,另外oauth_callback_confirmed字段如果為true就表示callback生效。

服務器端的響應如下:

oauth_token=1a6b213f81ef48b4b94524c2cfff50d0&oauth_token_secret=2c52bae787544992b20f21e01635ab67&oauth_callback_confirmed=true

此時返回的oauth_token即為RequestToken, oauth_token_secret即為RequestTokenSecret。這時需要將oauth_token和oauth_token_secret記下,我們需要用這個參數來獲取access token。

1.3.2. 用戶授權認證

app發送HTTP GET請求到http://oapi.vancl.com/oauthnew/authorize.aspx獲取授權碼(oauth_verifier)。(說明:如果是注冊,則請求地址為http://oapi.vancl.com/oauthnew/UserRegister.aspx,其他與oauth登錄認證方式完全一樣)要求必須以oauth_token作為參數,一般來說請求格式如下:

http://oapi.vancl.com/oauthnew/authorize.aspx?oauth_token=1a6b213f81ef48b4b94524c2cfff50d0

請求參數:

參數名稱 說明
oauth_token 上一步中獲得的未授權的Request Token

返回參數:

參數名稱 說明
oauth_token 用戶授權之后的Token值, 與未授權Token值相同
oauth_verifier 簽名值,方便第三方來驗證來源的可靠性

示例

請求參數:

參數名稱 說明
oauth_token 1a6b213f81ef48b4b94524c2cfff50d0

返回結果:

參數名稱 說明
oauth_token 1a6b213f81ef48b4b94524c2cfff50d0
oauth_verifier NlbRvOzRqxWzarCpdq8xgA==

說明:

①此頁面中會要求用戶登陸凡客,然后選擇同意或者拒絕對應用授權。

②授權成功后:

web應用會重定向到oauth_callback所指定的URL(其中包含oauth_token和oauth_verifier)。 客戶端應用(oauth_callback=null)會在網頁中給出授權碼,用戶需要手工將驗證碼輸入到應用中才能完成授權流程。

oauth_callback用來登錄成功后,回調到第三方應用的頁面。回調后, oauth_callback應該已經接到返回的信息,其中包含oauth_token和oauth_verifier。樣例如下: oauth_token=1a6b213f81ef48b4b94524c2cfff50d0&oauth_verifier=NlbRvOzRqxWzarCpdq8xgA==

1.3.3. 獲取access token

app發送HTTP GET請求到http://oapi.vancl.com/oauthnew/access-token.ashx獲取access_token

請求參數:

參數 說明
oauth_consumer_key 應用的唯一KEY標記
oauth_token 第一步中獲得的Request Token
oauth_signature_method 簽名方法,暫只支持HMAC-SHA1
oauth_signature 簽名值,密鑰為:oauth_consumer_secret &Request Token Secret。
oauth_timestamp 時間戳, 其值是距1970 00:00:00 GMT的秒數,必須是大于0的整數
oauth_nonce 單次值,隨機生成的32位字符串,防止重放攻擊(每次請求必須不同)
oauth_verifier 上一步請求授權request token時返回的授權碼
oauth_version 版本號,必須為“1.0”

返回參數:

參數 說明
oauth_token 具有訪問權限的token(Access token)
oauth_token_secret Access token的密鑰
user_id 用戶ID
UserToken 用戶token

示例

請求參數:

參數 參數值
oauth_consumer_key 873786fd712936a3a1f3cc9b8b1a6b94
oauth_token 1a6b213f81ef48b4b94524c2cfff50d0
oauth_signature BhZMohRRgjFrWBRi6qL993XuGXQ%3d
oauth_nonce 9ae3a3b8051b466c85c8d0107c8423c3
oauth_timestamp 1321584266
oauth_signature_method HMAC-SHA1
oauth_version 1.0
oauth_verifier NlbRvOzRqxWzarCpdq8xgA==

Base string的生成

Base String GET&http%3A%2F%2Foapi.vancl.com%2Foauthnew%2Faccess-token.ashx&oauth_consumer_key%3D873786fd712936a3a1f3cc9b8b1a6b94%26oauth_nonce%3D9ae3a3b8051b466c85c8d0107c8423c3%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1321584266%26oauth_token%3D1a6b213f81ef48b4b94524c2cfff50d0%26oauth_verifier%3DNLBRVOZRQXWZARCPDQ8XGA%253D%253D%26oauth_version%3D1.0

使用signing key(Consumer Secret和Request Token Secret中間使用&分隔)生成oauth_signature:

signing key 3a58dd9023cf1adec08f0656acc5bf95&2c52bae787544992b20f21e01635ab67
signature BhZMohRRgjFrWBRi6qL993XuGXQ%3d

返回結果

參數名稱 參數值
oauth_token 22d9af8dadd445128b2f7e4c3092470c
oauth_token_secret a01f08a98c734e4488a5b8b6c8a42d20
user_id 31347780
UserToken e8f45c004264e721adbb78bc369cbdbb

請求格式為:

http://oapi.vancl.com/oauthnew/access-token.ashx?oauth_consumer_key=873786fd712936a3a1f3cc9b8b1a6b94&oauth_nonce=9ae3a3b8051b466c85c8d0107c8423c3&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1321584266&oauth_token=1a6b213f81ef48b4b94524c2cfff50d0&oauth_verifier=NLBRVOZRQXWZARCPDQ8XGA%3D%3D&oauth_version=1.0&oauth_signature=BhZMohRRgjFrWBRi6qL993XuGXQ%3d

凡客開放平臺會返回應用需要的信息,包括 UserId,UserToken,oauth_token,oauth_token_secret(當然這里就是AccessToken與AccessTokenSecret了)。 response內容如下:

oauth_token=22d9af8dadd445128b2f7e4c3092470c&oauth_token_secret=a01f08a98c734e4488a5b8b6c8a42d20&user_id=31347780& UserToken=e8f45c004264e721adbb78bc369cbdbb

現在就可以使用UserId,oauth_token,oauth_token_secret來訪問服務端API啦。

iOS Android Appcan WeChat

總結

以上是生活随笔為你收集整理的OAuth授权验证说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。