2016-01-21 48 views
1

在回答這個問題Why do access tokens expire?,第一點提供的狀態:短期訪問令牌如何增加安全性?

[承載的令牌是]短暫的,需要刷新,它們限制了時間,攻擊者可以濫用偷來的令牌。

但是當使用訪問令牌(從本機應用程序),將客戶使用刷新令牌得到一個新的訪問令牌,併發送新的令牌回請求者。因此,如果攻擊者使用其他人的訪問令牌,則每次都會發送一個全新的訪問令牌。

那麼誰在乎令牌持續多久呢?如果攻擊者得到它,他們已經接管了會議只要刷新令牌持續

我已經知道了十幾回答我的問題,但我有問題要每個答案。我最初的問題是如此之久,因爲我解釋了每一種情況,以及它們如何不重要或錯誤(據我所知)。所以請儘量幫助我理解,如果我認爲答案有問題,我會發表評論。

添加/編輯 - 希望更多的答案跟我的其他信息

  1. 網頁調用客戶端與資源所有者(用戶)證書
  2. 客戶端調用驗證服務器並獲得訪問和刷新令牌。訪問令牌將在5分鐘內過期,刷新令牌將在幾小時或幾天內或任何時間到期。
  3. 客戶端發送的訪問令牌網頁
  4. 資源所有者(用戶)使用網頁
  5. 網頁發送訪問令牌客戶
  6. 客戶端發送的訪問令牌資源服務器
  7. 資源服務器會檢查訪問令牌中任意數量的方式
  8. 資源服務器發送資源到客戶端
  9. 客戶端發送的資源到資源所有者
  10. 資源所有者(用戶)繼續使用網頁客戶端在每個請求期間或每4分30秒使用刷新令牌獲取新的訪問令牌
  11. 客戶端在每個請求或每4分30秒,發送一個新的訪問令牌活動資源所有者

是?沒有?由於資源所有者使用網站積極,網站與客戶端持續通信,並且客戶端獲得新的訪問令牌(使用刷新令牌)並將其發送回網站,因此有效的用戶可以繼續使用該網站,而不會每5分鐘被踢出一次。

因此,如果任何人獲得該訪問令牌的保留,並且正在使用該訪問令牌,則客戶端將繼續向具有該訪問令牌的任何人發送新的訪問令牌。授予:經過一次刷新後,這兩個人中的一個將有一個不良的訪問令牌並被啓動,但不一定是正確的人。

+0

什麼令牌「如果攻擊者使用別人的令牌」是指?訪問令牌,刷新令牌或兩者。他們之間有區別。 –

+0

訪問令牌。編輯問題 – Suamere

回答

0

訪問令牌是短暫的,刷新令牌是長期存在的。訪問令牌將呈現給承載受保護內容以訪問的資源服務器(僅限資源服務器)。刷新令牌僅顯示給授權服務器,而不顯示給資源服務器。所以當攻擊者獲得訪問令牌時,他可以在訪問令牌的生命週期中使用它來訪問受保護的內容。

當訪問令牌過期時,除非他已獲得刷新令牌,否則無法獲取新令牌。除此之外,當使用刷新令牌時,客戶端通常會向Authorization Server進行身份驗證,所以即使攻擊者獲得刷新令牌,他也需要客戶端的憑據來使用它來獲取新的訪問令牌。

+0

對。因此,如果訪問令牌僅在我網站上的瀏覽器安全HTTPS Cookie中持續5分鐘... 5分鐘後您怎麼沒有註銷?爲什麼cookie的價值不斷變化?答案是因爲:Web服務器(客戶端)不斷刷新令牌並免費發送新的cookie。所以作爲** ** ** Cookie的攻擊者,我只需將它發送給Web服務器一次,它就會一直給我一個新的訪問令牌。 – Suamere

+0

您正在使用Cookie與令牌相混淆,並且一般會將OAuth客戶端與驗證用戶身份的Web應用程序混爲一談;一篇文章進入了區分:http://oauth.net/articles/authentication/ –

+0

我可以看到這是如何,但我不相信這是我正在做的。我之前閱讀過這篇文章,同時我也瞭解OAuth太多了。我的確在說服務器端Web應用程序是這個故事中的客戶端。但我並沒有將其與驗證過程混淆。我的確在說使用Cookie來存儲訪問令牌是使用的方法,但這不是唯一的方法。我的問題和意見*特別*關於OAuth的授權序列以及訪問/刷新令牌的關係。所有OAuth的東西。 – Suamere

3

您的觀點似乎是,如果攻擊者可以接管瀏覽器會話,那麼他們將能夠訪問整個刷新令牌的第三方資源,如您所描述的。那麼擁有一個短命的訪問令牌有什麼意義?

有肯定有些道理如此,但一般有兩種反應:

  • 使用刷新令牌使其切實可行無效如果第三方計算出,本次會議已採取用戶被攻擊者覆蓋。
  • 訪問令牌/刷新令牌系統用於防止或限制您未提及的其他類型的攻擊。

關於第一點,請記住訪問令牌發送到資源服務器,而不是授權服務器。儘管規範中沒有任何內容阻止資源服務器檢查用戶的有效性,但實際上這會導致性能問題,並會模糊資源服務器與授權服務器之間的區別。相反,訪問令牌通常設計爲自我驗證,無需訪問某些外部資源。

鑑於此,使用戶失效的唯一方法是在發送刷新令牌時在授權服務器上執行此操作。授權服務器發現該用戶已被標記爲受損,並拒絕發送新的訪問令牌。

關於第二點,OAuth有許多其他安全方案,旨在防止攻擊者接收用戶的瀏覽器會話以外的其他安全方案。如果某人能夠以其他方式獲取訪問令牌呢?由於訪問令牌本身通常不用於訪問客戶端(請參閱下文),因此它們將無法讓客戶端爲其刷新令牌,因此訪問令牌很短這一事實移動將是安全優勢。

作爲參考,這兩個要點在Oauth工作組郵件列表的this email中作了簡要介紹。


在您在您的文章中描述的流程具體來看,我覺得你的困惑是植根於思想,即客戶端(Web服務器)將用戶代理(瀏覽器)訪問令牌(你的步驟3) ,並且該令牌(以cookie的形式)是客戶端用來驗證用戶代理的內容。儘管web框架可以完成這些工作,但任何一個都不是OAuth的一部分(根據我的經驗,在Web框架中也不例外)。

+0

似乎對我而言,OAuth訪問/刷新令牌安全性取決於檢測令牌何時受到危害的能力。然後刷新令牌可以被取消。但是這看起來不夠充分,因爲檢測令牌何時受到危害對任何具有基本安全知識的計劃攻擊者來說都很複雜。看起來唯一防止它的方法是使用滾動鍵持續握手,並且如果因爲握手不同步而嘗試交換舊密鑰,請取消刷新令牌。 – Suamere

+0

@Suamere:沒有任何安全技術可以抵禦所有攻擊,但正如所證明的那樣,相對於長期自我驗證的訪問令牌而言,這會增加安全性,這是您的問題。許多公司(谷歌,Facebook,信用卡公司等)都有自動化系統來檢測對他們服務的濫用和欺詐性使用,因此可以發現不良行爲者並使其令牌失效。 –

+0

因此可擴展性和對不遵循最佳實踐的網站提供保護。後者我並不關心,但它是大多數人都可以使用的可伸縮性優化(例如,允許攻擊者最多訪問API一個小時)?換句話說,這僅僅是一個額外的安全層,在已經安全的協議(https,csrf,xss保護等)之上? – user1164937

相關問題