2014-10-08 47 views
4

我敢肯定,我在這裏的東西,所以希望有人在這裏可以填寫我英寸的Web API的OAuth承載令牌安全

我期待在.NET 4.5的Web API的OAuth 2.0實現(版本2我猜?),我已經實現了一個非常簡單的演示,其中我有一個控制檯應用程序調用一些基本操作。我從「/ Token」端點獲得一個令牌,並將其作爲授權標頭中的「承載」令牌傳回。它一切正常。

但是,我所缺少的是如何不受MITM,重播或其他攻擊的影響?如果我只是簡單地(憑證形式)遞交證書,並且他們始終是相同的證書,那麼爲了確保沒有人簡單地竊取我的令牌並假冒我,這種安全措施是如何包裝的?

無可否認,我也使用SSL,但這是唯一的安全性嗎?也許我應該使用某種隨機數或時間戳檢查?如果是這樣,那麼在Web API中如何做到這一點?

無論如何,我確信這裏有一個非常簡單的解釋,所以我會很感激這個信息。

另請注意,我在兩個運行在不同端口上的VS 2013解決方案中的兩個Visual Studio 2013 Web應用程序項目中運行了兩臺服務器。我不確定這是否重要,但我想我會提及它。

+0

在StackOverflow中,我真的很沮喪於這種編輯概念。我不明白這個編輯如何對問題的精神至關重要。我認爲這應該是顯而易見的,這是一個概念性問題,我如何運行我的設置不會影響答案。我只用它作爲我的問題來自何處。爲什麼不把這個添加爲評論,或者在將這些詞語放在我的嘴裏之前問這是否是我的意思?我也認爲在答案被接受後編輯問題是沒有意義的。這個編輯可以改變給出的答案。挫折感豐富。 – ChrisC 2014-10-21 15:51:39

+0

有些時候人們喜歡玩他們給的玩具:)另外,它的一種方式來提高你的聲譽,按照這篇文章在這裏>> http://meta.stackexchange.com/questions/17204/six-simple -tips-to-get-reputation-fast-on-any-stack-exchange-site – user20358 2015-04-13 08:11:34

回答

11

OAuth 2.0承載令牌的安全性完全依賴於SSL/TLS,因此沒有內部保護或承載令牌。如果你有令牌,你就是所有者。在許多使用OAuth 2.0進行中繼的API提供商中,他們提供了大膽的,即客戶端開發人員應該在傳輸過程中安全地存儲和保護令牌。

您可以閱讀Eran Hammer曾經與標準化OAuth 2.0的社區合作的文章,但我相信他留下了意見衝突。檢查他的帖子OAuth Bearer Tokens are a Terrible Idea,你可以閱讀這post too

但最終它正在成爲標準方式,您必須通過https傳輸並安全地存儲它。

+0

謝謝Taiseer。我以爲我曾經在某處讀過很多東西(可能是Eran Hammer的文章),但對我來說這似乎很奇怪,因爲HMAC在簽名,使用隨機數,時間戳等方面遇到了很多麻煩。你知道嗎?有什麼其他的最佳實踐可以用來使這個過程更安全? – ChrisC 2014-10-09 11:14:56

+0

@ChrisC簽名嚴格用於確保令牌是由您的服務器發出的。由於有效載荷本身只是base64,所以您有兩種選擇。您不會將敏感數據存儲在令牌中或加密有效負載。這篇文章是一個有趣的閱讀:https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/#confidential-info – 2015-05-07 19:34:39

+1

謝謝Taiseer Joudeh,我對Oauth2.0與持票人令牌有很大的疑惑。這個解釋適當地解決了我的困惑。 – 2015-06-17 14:07:29