2015-01-12 99 views
0

我理解嘗試從提供者的角度使用OAuth進行身份驗證的安全問題。然而,我被要求爲用戶提供使用OAuth登錄到新Web應用程序的功能,並從Google和Twitter等用戶中獲取他們的基本身份信息,從中創建客戶端應用程序中的新用戶帳戶。此外,用戶可以通過用戶/密碼直接註冊/登錄,以便任何不想使用第三方帳戶的人使用。OAuth身份驗證客戶端安全問題

我們不需要任何訪問用戶的詳細信息/提供者API,只是他們初次登錄時的基本身份,當然也不允許他們在將來通過提供者登錄。並不完全是OAuth的用例,OpenId將是首選,但OAuth已被指定,並且不需要有效的關注。

我的問題是,它是多麼安全,它假設用戶已正確認證自己與相關的供應商。如果我相信Google說要執行足夠的身份驗證,並且我獲得了訪問令牌和他們的身份,那麼推測我可以認爲這是合法用戶?如果有人能夠訪問資源所有者機器並在瀏覽器中保存密碼,顯然存在問題,但是那些選擇直接註冊的用戶會遇到問題。

假定有可能僞造訪問令牌,例如,中間的人假裝是谷歌? MITM可以僞造訪問令牌並提供與註冊用戶的Google ID匹配的身份詳細信息?我沒有看到任何客戶知道這些信息絕對來自提供者。很明顯,這個問題並不是OAuth獨有的。

有沒有另一種方式有人可以非法訪問一個使用OAuth的帳戶驗證自己。

+0

首先,接入令牌是特定於應用程序和** **不最終用戶。要獲取訪問令牌,應用程序必須註冊到服務提供商。其次,OAuth對用戶身份驗證過程沒有任何引用**,用戶身份驗證僅用於允許用戶接受應用程序是否可以訪問其受保護資源。那麼,如果應用程序本身從未被服務提供商註冊過,僞造訪問令牌的方式是否真的適合? –

+0

很明顯,應用程序將被註冊。我曾想過,如果有東西可以攔截通信給OAuth提供商,他們可以假裝成它們,返回一個隨機令牌,然後在請求時提供一個捕獲的Google ID。谷歌永遠不會聯繫,應用程序'假設'用戶已經去谷歌和身份驗證。從我所看到的客戶端無法驗證來自Google的令牌。 – vickirk

回答

1

OAuth允許的一個應用訪問一個特定用戶資源(已經由用戶提供許可),它不能去那個範圍之外。我還沒有看到涉及使用基於OAuth的應用程序創建新用戶的文檔。

話雖這麼說:

我們不要求用戶的詳細信息/資訊或提供 的API,只是他們的時候,他們首先登錄

這違反OAuth授權過程基本認同任何訪問。服務提供商執行身份驗證並提供相關令牌(基於身份驗證的成功)。這是爲了確保在OAuth身份驗證過程中沒有第三方身份驗證。

我的問題是,它是多麼安全,它假設用戶已經正確地 認證自己與相關的供應商。

這一切都依賴於服務提供商本身。爲了符合OAuth協議,的要求之一是,用戶認證必須做在一個安全的傳輸層與數字證書(HTTP,它必須在HTTPS來完成)。 OAuth消費者沒有任何參考認證過程。此外,認證過程基本上詢問用戶消費者是否可以訪問特定用戶的資源(而不是任何其他人,因爲他沒有授權)。

是否有可能僞造的訪問令牌,如男子在中間 假裝是谷歌?

欺騙服務提供商IS可能,但它會很乏味。首先,你必須創建一個整個的OAuth握手過程,創建確切 API作爲服務提供商,還設置是固定的環境中(如OAuth的建議)。欺騙服務提供商唯一可以獲得的是客戶端憑證。如果它具有其用戶憑據,則不需要使用該應用程序,因爲沒有辦法使用應用程序提供用戶證書來進行惡意破壞。

其次,訪問令牌過期,即使您欺騙並檢索訪問令牌,原始應用程序所有者也可以要求服務提供者阻止應用程序,並且訪問令牌可能無用。

在中間人攻擊是不可能的。您將不得不復制服務提供商,因爲最終用戶將無法區分原始服務提供商和欺騙服務提供商,以便從應用程序和最終用戶中捕獲所有相關憑據。

+0

「我還沒有看到涉及使用基於OAuth的應用程序創建新用戶的文檔。」 - 對不起,我不清楚。第一次用戶通過提供者登錄時,會提示在客戶端應用程序中創建一個新帳戶,爲此,客戶端將向提供者請求資源所有者的身份。 – vickirk

+0

「這違反了OAuth授權流程」,再次不清楚,對不起。我很欣賞客戶不提供授權的任何部分,實際上OAuth爲此項目指定的原因之一就是我們掌握的信息較少。 – vickirk

+0

謝謝。我是否認爲你暗示假設提供者的成功迴應意味着用戶有效地進行了身份驗證是相當安全的?我並不擔心任何人試圖訪問提供者中的資源,只是欺騙我們的應用程序。 – vickirk

0

可悲的說,你最後一句話的情景是真相。

但是你應該認識到安全是一個巨大而複雜的問題,尤其是在客戶端。這不僅僅發生在一個點上,而且貫穿整個互聯網接入生命週期的許多點。您提供的場景不是OAuth試圖解決的問題。

+0

是的,我欣賞安全是一個巨大的問題。一旦使用最佳實踐登錄後,應用程序將受到各種安全測試。對於OAuth,我*只*真正擔心假裝成爲他們並訪問該用戶信息的人,這是非常重要的,但他們無法訪問任何高價值資源,這些資源通過AD進行保護。 – vickirk