看看別人是如何理解這個(gè)抽象概念的?
OAuth(開(kāi)放授權(quán))是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問(wèn)該用戶在某一網(wǎng)站上存儲(chǔ)的私密的資源(如照片断盛,視頻苗沧,聯(lián)系人列表),而無(wú)需將用戶名和密碼提供給第三方應(yīng)用个曙。
OAuth 允許用戶提供一個(gè)令牌锈嫩,而不是用戶名和密碼來(lái)訪問(wèn)他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個(gè)令牌授權(quán)一個(gè)特定的網(wǎng)站(例如垦搬,視頻編輯網(wǎng)站)在特定的時(shí)段(例如呼寸,接下來(lái)的 2 小時(shí)內(nèi))內(nèi)訪問(wèn)特定的資源(例如僅僅是某一相冊(cè)中的視頻)。這樣猴贰,OAuth 讓用戶可以授權(quán)第三方網(wǎng)站訪問(wèn)他們存儲(chǔ)在另外服務(wù)提供者的某些特定信息对雪,而非所有內(nèi)容。
我在QQ空間中上傳了好多我跟孩子游玩的照片米绕。有一天我發(fā)現(xiàn)某網(wǎng)站有一種自助的在線打印照片服務(wù)瑟捣。于是我就想把我的照片打印出來(lái)。為了使用該服務(wù)栅干,必須讓"云沖印"讀取自己儲(chǔ)存在QQ空間上的照片蝶柿。
問(wèn)題是只有得到我的的授權(quán),QQ空間才會(huì)同意"云沖印"讀取這些照片非驮。那么交汤,"云沖印"怎樣獲得我的授權(quán)呢?
傳統(tǒng)方法是,我將自己的QQ用戶名和密碼芙扎,告訴"云沖印"星岗,后者就可以讀取用戶的照片了。這樣的做法有以下幾個(gè)嚴(yán)重的缺點(diǎn):
- "云沖印"為了后續(xù)的服務(wù)戒洼,會(huì)保存用戶的密碼俏橘,這樣很不安全。
- QQ不得不部署密碼登錄圈浇,而我們知道寥掐,單純的密碼登錄并不安全。
- "云沖印"擁有了獲取用戶儲(chǔ)存在QQ所有資料的權(quán)力磷蜀,用戶沒(méi)法限制"云沖印"獲得授權(quán)的范圍和有效期召耘。
- 用戶只有修改密碼,才能收回賦予"云沖印"的權(quán)力褐隆。但是這樣做污它,會(huì)使得其他所有獲得用戶授權(quán)的第三方應(yīng)用程序全部失效。
- 只要有一個(gè)第三方應(yīng)用程序被破解庶弃,就會(huì)導(dǎo)致用戶密碼泄漏衫贬,以及所有被密碼保護(hù)的數(shù)據(jù)泄漏。
OAuth就是為了解決上面這些問(wèn)題而誕生的歇攻。
其實(shí)阮老師已經(jīng)非常形象生動(dòng)的解釋了這么一個(gè)抽象難懂的概念啦固惯。在我們現(xiàn)在的生活中,隨處可見(jiàn)缴守。比如:王者榮耀葬毫、摩拜單車、ofo斧散、知乎等等供常。它們都是采用oauth方案進(jìn)行登錄授權(quán)。
運(yùn)行原理
OAuth 2.0的運(yùn)行流程如下圖鸡捐,摘自RFC 6749栈暇。
(A)用戶打開(kāi)客戶端以后,客戶端要求用戶給予授權(quán)箍镜。
(B)用戶同意給予客戶端授權(quán)源祈。
(C)客戶端使用上一步獲得的授權(quán),向認(rèn)證服務(wù)器申請(qǐng)令牌色迂。
(D)認(rèn)證服務(wù)器對(duì)客戶端進(jìn)行認(rèn)證以后香缺,確認(rèn)無(wú)誤,同意發(fā)放令牌歇僧。
(E)客戶端使用令牌图张,向資源服務(wù)器申請(qǐng)獲取資源锋拖。
(F)資源服務(wù)器確認(rèn)令牌無(wú)誤,同意向客戶端開(kāi)放資源祸轮。
生活中的理解
王者榮耀登錄授權(quán)
說(shuō)明:圖中的第c兽埃、d、e适袜、f步驟都是后臺(tái)中完成柄错。
辦理身份證,買票去旅游