2014-02-12 62 views
7

我想實現我的JAX-RS RESTful服務的OAuth 2.0授權。確保JAX-RS和Apache CXF和OAuth 2.0

一些研究之後,我發現的Apache CXF做到這一點。但是,我還沒有找到任何有關它的例子,對我來說還不清楚。我在哪裏可以找到一些使用OAuth 2.0的JAX-RS示例?

+0

你有沒有發現這個問題什麼好的解決辦法還是你想開發自己的CXF-auth2?如果是的話,請張貼的答案..我..等待 –

+1

@MohasinAli我認識的OAuth 2.0將是我的要求太複雜。所以最後我在[本答案](http://stackoverflow.com/a/26778123/1426227)中描述了基於令牌的身份驗證。 –

+0

@MohasinAli在我的研究,我發現[阿帕奇Oltu(https://oltu.apache.org)的OAuth的Java中的實現。 –

回答

3

免責聲明:這個答案並不真正提供一個解決方案來保護JAX-RS與OAuth 2.0。但它旨在對Mohasin Ali提供一些見解,Mohasin Ali開始對我的問題給予賞金。也許,我使用的解決方案可能對他有用。


關於賞金:

的問題是廣泛適用於大量的觀衆。需要詳細的規範答案來解決所有問題。

問這個問題前一段時間之後,我意識到,OAuth 2.0用戶將對我的要求過於複雜。即使Basic Authentication也足夠滿足我的要求。但我最終使用基於JWT令牌的身份驗證方案在服務器端簽名。我在這個answer中描述了我的解決方案。

Apache CXF provides an implementation of OAuth 2.0。如果您想使用OAuth保護您的API,則可能需要查看它。 Apache CXF also supports OAuth 1.0

不要緊,您決定使用的身份驗證方法,做一個HTTPS連接的頂部。你需要一個證書。作爲一個建議,看看Let's Encrypt。他們聲稱是免費的,自動化的,開放的認證機構,目前由Mozilla,Akamai和思科,Chrome瀏覽器,Facebook和其他贊助。


對於以下情況,提到in the comments

[...]惡意用戶訪問別人的電腦,打開瀏覽器,看到的訪問令牌和副本訪問令牌自己的瀏覽器[...]

如果惡意用戶具有對計算機進行物理訪問,HTTPS並不能阻止這個惡意的用戶從別人的電腦竊取認證令牌。其實,如果真的發生了,我想你應該有更大的關注...

對於一個額外的安全層,你可以考慮存儲的令牌,你發出的令牌的用戶的IP地址一起。對於每個遇到您的API的請求,將傳入請求的IP與您爲其頒發令牌的用戶的IP進行比較。如果IP不匹配,請拒絕該請求。

如果您使用JWT令牌,而不是存儲整個令牌,則只存儲JWT ID claimjti)。只需確保此值是唯一的(java.util.UUID應該足以生成jti值)。

對於完全無狀態的驗證(不存儲整個令牌既沒有存儲令牌ID),你可以存儲一個JWT令牌要求的IP地址,但介意令牌將是幾個字節長。