OAuth2.0是什么
OAuth的英文全稱是Open Authorization,它是一種開放授權協議。OAuth目前共有2個版本,2007年12月的1.0版(之后有一個修正版1.0a)和2010年4月的2.0版,1.0版本存在嚴重安全漏洞,而2.0版解決了該問題。
OAuth簡單說就是一種授權的協議,只要授權方和被授權方遵守這個協議去寫代碼提供服務,那雙方就是實現了OAuth模式。
OAuth2.0實現第三方登錄的流程
例如你想登錄豆瓣去看看電影評論,但你丫的從來沒注冊過豆瓣賬號,又不想新注冊一個再使用豆瓣,怎么辦呢?不用擔心,豆瓣已經為你這種懶人做了準備,用你的qq號可以授權給豆瓣進行登錄。流程如下:
第一步:在豆瓣官網點擊用qq登錄
當你點擊用qq登錄的小圖標時,實際上是向豆瓣的服務器發起了一個 http://www.douban.com/leadToAuthorize
的請求,豆瓣服務器會響應一個重定向地址,指向qq授權登錄。
瀏覽器接到重定向地址 http://www.qq.com/authorize?callback=www.douban.com/callback
,再次訪問。并注意到這次訪問帶了一個參數是callback,以便qq那邊授權成功再次讓瀏覽器發起這個callback請求。不然qq怎么知道你讓我授權后要返回那個頁面啊,每天讓我授權的像豆瓣這樣的網站這么多。
第二步:跳轉到qq登錄頁面輸入用戶名密碼,然后點授權并登錄
qq的服務器接收到了豆瓣訪問的authorize,在此例中所給出的回應是跳轉到qq的登錄頁面,用戶輸入賬號密碼點擊授權并登錄按鈕后,一定還會訪問qq服務器中校驗用戶名密碼的方法,若校驗成功,該方法會響應瀏覽器一個重定向地址,并附上一個code(授權碼)。由于豆瓣只關心像qq發起authorize請求后會返回一個code,并不關心qq是如何校驗用戶的,并且這個過程每個授權服務器可能會做些個性化的處理,只要最終的結果是返回給瀏覽器一個重定向并附上code即可。
第三步:跳回到豆瓣頁面,成功登錄
這一步背后的過程其實是最繁瑣的,但對于用戶來說是完全感知不到的。用戶在QQ登錄頁面點擊授權登陸后,就直接跳轉到豆瓣首頁了,但其實經歷了很多隱藏的過程。
首先接上一步,QQ服務器在判斷登錄成功后,使頁面重定向到之前豆瓣發來的callback并附上code授權碼,即 callback=www.douban.com/callback
。
頁面接到重定向,發起 http://www.douban.com/callback
請求。
豆瓣服務器收到請求后,做了兩件再次與QQ溝通的事,即模擬瀏覽器發起了兩次請求。
一個是用拿到的code去換token,另一個就是用拿到的token換取用戶信息。最后將用戶信息儲存起來,返回給瀏覽器其首頁的視圖。到此OAuth2.0授權結束。
新聞熱點
疑難解答