2

我正在研究身份驗證協議的主題,特別是與JAVA和REST API協同工作的協議,並且有關於該主題的問題。 所需系統的體系結構是一個簡單的客戶機 - 服務器。安全和身份驗證協議

我發現了一些有用的協議,如2腿OAuth,摘要式身份驗證,亞馬遜S3協議,當然還有SSL。

我是這個認證業務的初學者,我不太明白爲什麼我們應該使用所有其他協議,而不是僅使用SSL?

據說SSL據說比較慢,但我很早以前就明白這種情況,現在這個協議沒有這個問題。 無論如何,所有其他協議都採用SSL也令我感到困惑。

我知道SSL阻止重播攻擊和中間人攻擊。 與上述協議相比,SSL有什麼不同或者不夠?每個協議的貢獻是不同的?

回答

1

您描述了2個不同的要求。您可以將您的應用程序其中之一或兩者:

1)數據保護

2)認證

的數據保護手段的機密性,內容的完整性,重放攻擊和人在中間的攻擊和更多。所有這些功能都可以通過SSL來實現。 SSL幾乎可以應用於所有協議。

認證意味着你想控制誰訪問你的應用程序。 有大量的協議,你應該選擇認證協議,這取決於你想要投入認證的要求和時間。請考慮OAuth2。

此外,客戶端身份驗證在SSL中是可選的。 使用客戶證書進行SSL中的客戶認證(一般來說是X.509證書http://en.wikipedia.org/wiki/X.509) 查找客戶端證書身份驗證: http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html

客戶端證書是最安全的身份驗證,但是從基礎設施投資最昂貴的。至少它需要組織中的PKI基礎結構http://en.wikipedia.org/wiki/Public-key_infrastructure

+0

感謝您的快速回答!好吧,我現在明白了SSL只能處理安全部分,而不是認證部分,但是您的客戶端證書是什麼意思?您是否在OAuth協議中引用了證書(包括時間戳和/或隨機數和令牌)?而當你說證書使用SSL時,以什麼方式?這些事情對我來說並不是那麼清楚。 –

+0

我已經更新了答案 - 請再看一遍。客戶端證書與OAuth令牌無關。 – Michael

+0

謝謝!這是有幫助的,我接受了答案,但無法宣傳,因爲我還沒有足夠的聲望。還有一件事,當您談論客戶端身份驗證時,您是在討論如何驗證Web應用程序或用戶本身?這個詞經常會感到困惑。當我們談論身份驗證時,我們是在談論用戶名和密碼?還是像從客戶端識別私鑰那樣更復雜的東西?或兩者? –