2012-07-28 115 views
1

我們需要在Java Web項目中支持基本認證和後來的摘要認證。 我的疑問是Java服務器代碼/ Web服務器中的基本/摘要認證實現

  • 無論基本/摘要認證是在Web服務器 (Tomcat的,JBoss的等)。我們的用戶/密碼是在SQL數據庫中,我們通過 得到DataService的這些配置。在這種情況下,我如何配置 Web服務器以使用數據服務進行身份驗證?
  • 我是否需要在代碼中明確處理基本/摘要 身份驗證?就像我會收到來自 Servlet的認證請求,並將連接到dataservices進行認證?

回答

4

基本和摘要認證由servlet規範覆蓋。閱讀規範或this tutorial知道它是如何工作的。

雖然存儲憑據以及如何檢查憑證是由每個容器決定的。 Tomcat支持各種Realm implementations(基於文件,基於JDBC,基於LDAP等)不知道JBoss。

5

在Java EE安全性默認情況下聲明。這意味着您只能通過稱爲Role的抽象概念來指定要保護的資源。

添加到JB Nizet,在JBoss的答案,具體登錄模塊(大致相當於Tomcat的領域實現)可以在這裏找到:http://docs.jboss.org/jbosssecurity/docs/6.0/security_guide/html/Login_Modules.html

值得注意的是未知的許多(因爲它似乎),Java EE 6的還支持標準化認證模塊。這些是基於文件的,基於JDBC的等,通常被認爲是Application Server/Container特定的。

這是通過所謂的JASPIC API(又名JASPI,又名JSR 196)來完成,例如參見:

不幸的是,採用JASPIC/JASPI/JSR 196似乎充其量不足。目前,人們似乎信任AS特定的領域,登錄模塊以及你有什麼更好的,或者只是沒有意識到替代方案。

+0

+1。我根本不知道JASPIC。它是否是JEE規範的一部分?你需要支持它獲得認證嗎?它是標準網絡配置文件的一部分嗎? – 2012-07-28 10:43:08

+1

我相信JASPIC不是Java EE 6 Web Profile的一部分,這可能是現在我認爲它沒有采用的原因之一。然而,它絕對是完整Java EE 6規範的強制性部分。見例如http://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html – 2012-07-28 10:57:07

+0

p.s.也許令人驚訝的是,但像Jetty這樣的準系統支持JASPI(C)。另見本概述:http://en.wikipedia.org/wiki/Java_EE_version_history#Java_EE_6_.28Dec_10.2C_2009.29 – 2012-07-28 10:59:41