2012-07-05 39 views
2

我有一個擁有jsps的webapp。我沒有使用任何struts或mvc框架。我們使用Apache CXF構建JAX-RS服務。在jax-rs webservice中處理身份驗證和授權,使用cxf

現在我想要做下列

  1. 允許用戶與用戶名和密碼登錄。
  2. 對於所有後續的webservice調用,都應該使用相同的認證信息。
  3. 登錄用戶有一些細節(個人資料照片,全名),我想保持它在會話中保持不變。
  4. 另外,它的作用被定義。根據角色,只有某些jax-rs調用將被允許。
  5. JSP中還使用角色來限制對功能的訪問。
  6. Web服務可以在外部訪問,因此應該使用認證和授權信息。

據我瞭解,我們不應該在jax-rs服務中使用會話。處理上述情況的最佳方法是什麼?

回答

2

最好的方法取決於你如何估計它。 我這樣做的方式是

  1. 運行REST服務和JSP在同一實例
  2. 使用web.xml和CXF設置安全策略,它允許用戶/密碼認證和授權,角色綁定到jax-rs網址和JSP網址。
  3. 根據2,可以直接在外部調用jax-rs服務,但是user/pw是您指定的必需的。

希望這可以幫助你一點。

+0

問題是如何在個別操作中獲取安全上下文而不會搞亂代碼。目前我所做的是獲取servletContext並從相同的等得到會話。它的髒。我的簡單POJO雜亂無章的訪問控制代碼讀取會話等 – 2013-02-19 07:39:22

0

將cxf安全驗證視爲任何其他http或https驗證。您必須攔截請求並將其傳遞給其餘服務。您可以使用siteminder之類的任何工具,否則可以編寫CXF攔截器來執行您自己的安全驗證。在攔截器中,你可以調用SSO類型的令牌生成器服務器,以防你擁有基礎架構,或者如果你的架構是以這種方式構建的,則可以調用數據庫。您可以使用緩存來減少資源命中,並可以查看自定義或休眠緩存。啓用Https必須在服務器配置中完成。如果你有證書,你可以使用相同的方法,你可以使用openssl自己生成證書。