OAuth的機制原理講解及開發(fā)流程
原文地址:http://kb.cnblogs.com/page/189153/ 本想前段時間就把自己通過QQ OAuth1.0,、OAuth2.0協(xié)議進行驗證而實現(xiàn)QQ登錄的心得及Demo實例分享給大家,,可一直很忙,今天抽點時間說下OAuth1.0協(xié)議原理,,及講解下QQ對于Oauth1.0的認證開發(fā),。閑話多說了點,下面直接進入主題,。 1,、OAuth的簡述 OAuth(Open Authorization,開放授權(quán))是為用戶資源的授權(quán)定義了一個安全,、開放及簡單的標準,,第三方無需知道用戶的賬號及密碼,就可獲取到用戶的授權(quán)信息,,并且這是安全的,。(我喜歡簡單明了,這里沒看懂,,沒關(guān)系,,接著往下面看) 2、OAuth的原理 (流程圖) 我在圖上分了四個步驟,,下面是四步的講解: 第一步:用戶訪問第三方網(wǎng)站,,比如:就是你需要使用QQ進行登錄的網(wǎng)站; 第二步:你點擊QQ登錄后,,第三方網(wǎng)站將會連接并進行請求,,比如:你點擊登錄后,第三方網(wǎng)站會跳轉(zhuǎn)到QQ平臺,,提示你進行登錄,; 第三步:你要進行授權(quán)第三方網(wǎng)站對你的信息訪問的一個權(quán)限,比如:當你QQ登錄成功后,,QQ會提示你,,是否授權(quán)第三方Web訪問你的用戶基本信息或其他的資源信息,這時你點擊授權(quán)即可; 第四步:授權(quán)后,,第三方Web即可訪問你剛才授權(quán)的資源信息,,比如:你的QQ基本信息-頭像、昵稱,、性別等,。 通過這個原理圖示及講解(圖是手工制作,有點草),,相信大家都了解了OAuth這個原理的一個基本流程,,若看不明白,你可以不用學(xué)習(xí)制作OAuth了,,開個玩笑,。(這步后,大家知道什么原理了,,但還是無法知道OAuth究竟是如何實現(xiàn)認證的,,別急,接著往下看) 3,、OAuth 1.0的認證流程 這里直接講解OAuth 1.0協(xié)議的認證機制(OAuth 2.0會在下一節(jié)中講述),,雖然現(xiàn)在很多平臺都是遵循OAuth 2.0,但還是有開放OAuth 1.0平臺的,,比如:新浪微博,、QQ1.0平臺等。 在OAuth 1.0認證中會用到三個重要的Url: 第一個:Request Token Url,,獲取未授權(quán)的Token的Url,; 第二個:User Authorization Url,請求用戶對Token進行授權(quán)的Url,; 第三個:Request Access Url,,使用Token獲取Access Token的Url。 上面是認證流程中用到的三個Url,,在下面的流程示意圖中會體現(xiàn)到,,這是我講解OAuth幻燈片的一頁,直接截圖下來進行講解: 第一步:網(wǎng)站向認證平臺請求一個未授權(quán)的Token,,這個Request Token Url是前面說的第一個Url,; 第二步:跳轉(zhuǎn)至用戶授權(quán)頁面,提示用戶進行登錄,,并進行授權(quán),,返回獲得已授權(quán)的Token,用到的User Authorization Url是前面說的第二個Url,; 第三步:通過已授權(quán)的Token,向認證平臺請求Access Token(數(shù)據(jù)令牌),用到的Request Access Url是前面說的第三個Url,,返回后到這步整個認證流程就結(jié)束了,,最后一步,是通過數(shù)據(jù)令牌等參數(shù),,調(diào)用接口獲取用戶信息,,不完全算認證的流程。(我喜歡簡潔明了,,認證流程就是這樣,,相信通過圖示及講解都能明白,若有不明白之處請留言) 4,、QQ OAuth1.0認證中Url的調(diào)用及參數(shù)的傳遞 前面講了OAuth1.0的機制原理及認證流程,,這篇文章著重講解QQ OAuth1.0認證中Url的調(diào)用、各參數(shù)的傳遞,、注意事項,。而因為現(xiàn)在QQ開發(fā)平臺上,已經(jīng)很少能找到OAuth1.0認證的說明開發(fā)文檔了,,采用新的2.0認證模式,,所以簡單講述Url請求與返回參數(shù)的傳遞,并沒有很詳細深入地講解,,有什么問題大家可留言給我,。 4.1、請求未授權(quán)的臨時Token 新建一個頁面為QQLogin.aspx,,用來請求臨時Token及跳轉(zhuǎn)到用戶授權(quán)頁,。下面是相關(guān)Url及參數(shù)介紹: Request Token Url(請求臨時Token的Url):http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token 請求后,跳轉(zhuǎn)至引導(dǎo)用戶登錄的Url:http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize 第一個Url請求參數(shù)包含如下內(nèi)容:(紅色為必填,、綠色為選填)
返回的參數(shù)有:oauth_token(臨時令牌),、oauth_token_secret(臨時密鑰對應(yīng)的令牌) 第二個Url需要傳遞的參數(shù)為:
返回的參數(shù)有:
4.2,、請求Access Token數(shù)據(jù)令牌 上一步中,,我們寫了一個回調(diào)地址,并順利得到一些參數(shù),,下面就是拿這些參數(shù)來進行下一步操作,,首先,得到數(shù)據(jù)令牌(只有拿到數(shù)據(jù)令牌才可以調(diào)用接口獲取用戶信息),。 Request Access Url(獲取Access Token請求Url):http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token Url請求參數(shù)包含如下內(nèi)容:
返回的參數(shù)如下:
4.3、通過Access token(數(shù)據(jù)令牌)調(diào)用API接口,,獲取用戶授權(quán)資源 請求Url:http://openapi.qzone.qq.com/user/get_user_info (這里默認寫的是get_user_info接口)
好了,,上面就是整個QQ OAuth1.0認證流程中Url參數(shù)的請求與返回說明,這OAuth1.0認證中,,你會發(fā)現(xiàn)參數(shù)特別多,,還有經(jīng)過HMAC-SHA1加密、簽名等操作,,特別麻煩,、繁瑣,所以還是最好推薦使用OAuth 2.0認證協(xié)議進行接口開發(fā),。 下面這篇文章是QQ登錄制作過程中,,公共返回碼說明(包含1.0、2.0),,供大家參考,,看是哪個階段出錯,然后對癥下藥,,特別是參數(shù)的請求,、傳遞是否正確,還有一個參數(shù)順序,、簽名是否正確,,這四點弄好,相信這個東西自然就實現(xiàn)了,。 OAuth_QQ登錄_公共返回碼說明:點擊進入,。 最后將自己開發(fā)制作的OAuth 1.0源代碼分享給大家,代碼分享:點擊下載,。 5,、OAuth2.0的認證流程 在OAuth2.0的處理流程,主要分為以下四個步驟: 1)得到授權(quán)碼code 2)獲取access token 3)通過access token,,獲取OpenID 4)通過access token及OpenID調(diào)用API,,獲取用戶授權(quán)信息 上面是流程的大概四個步驟,在下面的流程示意圖中會得到體現(xiàn),,這是我制作的一個幻燈片的流程圖(文章最后會附上制作的OAuth幻燈片分享給大家),,這里就直接截圖下來進行講解: 第一步:首先直接跳轉(zhuǎn)至用戶授權(quán)地址,即圖示 Request User Url ,,提示用戶進行登錄,,并給予相關(guān)資源授權(quán),,得到唯一的Auth code,這里注意的是code只有10分鐘的有效期,,對于安全考慮,,相對于OAuth 1.0省了一步獲取臨時的Token,并且有效期也進行了控制,,比1.0認證簡化了很多,,并安全一些; 第二步:得到授權(quán)code后,,這一步就是請求access token,,通過 圖示 Request access url ,生成得到數(shù)據(jù)Token,; 第三步:通過Access Token請求OpenID,,OpenID是用戶在此平臺的唯一標識,通過圖示 Request info url 請求,,然后得到OpenID,; 第四步:通過第二步得到的數(shù)據(jù)Token、第三步得到的OpenID及相關(guān)API,,進行請求,,獲取用戶授權(quán)資源信息。(我喜歡簡潔明了,,OAuth2.0認證流程就是這樣,,相信通過圖示及講解都能明白,若有不明白之處請留言) 最后,,分享自己關(guān)于OAuth1.0,、2.0認證流程講解的幻燈片,結(jié)合文章來看,,你會更容易理解,。 課件分享:點擊下載 (麻煩保留博主信息,謝謝)
|
|