2014-05-09 58 views
1

運行我剛纔研究如何驗證添加到一個Java servlet一個Java servlet簡單驗證。我發現this示例顯示瞭如何對servlet使用身份驗證,但這是針對Tomcat實現的。我們的生產環境使用Geronimo。我如何在Geronimo中完成同樣的事情?在Geronimo中

對不起,剛剛學會圍繞Geronimo的基礎前些天還沒有還沒有找到,在較高的水平,如何要求身份驗證在Geronimo上運行的servlet。

+0

您是否在尋找通過Geronimo的支持的任何基於J2EE authetication? – Keerthivasan

+0

對於初學者,我想要做一個簡單的用戶文件,如我發佈的示例中所述。在那個例子中,他們建議將用戶添加到tomcat-users.xml文件中。對於我來說,這是一個很棒的第一步(至少對於我來說,因爲我沒有其他身份驗證方法)。 – WildBill

+0

除了安裝(tomcat用戶文件)之外,它將是相同的。 –

回答

0

使用安全過濾器,它們實現在Servlet中身份驗證的最佳途徑, AS-簡單的身份驗證每一個環節會是這樣(在web.xml中)

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>com.nawab.filters.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>/* </url-pattern> 
</filter-mapping> 

如果你已經使用慣例。做動作使用過濾器只對行動(在web.xml)

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>com.nawab.filters.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>*.do</url-pattern> 
</filter-mapping>  

你需要在一個com.nawab.filters類LoginFilter(在web.xml中映射的地址) 的代碼將被寫入它是doFilter()方法ginFilter.class

public class LoginFilter implements Filter { 
public void init(FilterConfig arg0) throws ServletException { 
} 

public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 

    HttpServletResponse httpRes = (HttpServletResponse) response; 
    String ipAddress = request.getRemoteAddr(); 
    // your ipAddress 
    String yourIpAddress = "192.168.1.xxx"; 
    // name you want to authenticate 
    String name = "nawab"; 
    // ip address validation 
    if (!request.getParameter(ipAddress).equals(yourIpAddress)) { 
     httpRes.sendRedirect("wrongIp.jsp"); 
    } 
    if (!request.getParameter("fname").equals(name)) { 
     httpRes.sendRedirect("index.jsp"); 
    } 
    chain.doFilter(request, response); 
} 

public void destroy() { 
}} 

here chain.doFilter(request,response); 讓我們的流程按照原樣進行;否則用戶將被重定向到相應的jsp。

+0

密碼在哪裏存儲?此外,這是否發送用戶名爲純文本,是否正確?如果是這樣,你將如何保護流量並加密它? – WildBill

+0

的用戶名安全 - 1.使用POST協議和用戶名不會在URL中發送。 2.在發送之前加密用戶名(通過javascript)併發送加密的用戶名,從數據庫獲取加密版本並進行比較。 的密碼 - 1.you必須在數據庫中存儲的加密密碼,很明顯,你會從數據庫中獲取的密碼,並比較了。(這是爲了讓你知道流的例子,其他一切都可以在完成的doFilter(),因爲它是在Java中,我們做這些事情,開發商每天的基礎上。:)) – bondkn

1

您需要配置它geronimo-web.xml內。 web.xml與您提供的示例類似。

這裏,顯示它的大部分資源:

http://geronimo.apache.org/GMOxDOC20/web-application-security-sample.html

在這個例子中用戶密碼是在數據庫中。

但它可能同時配置geronimo-web.xmlhttp://geronimo.apache.org/xml/ns/security-1.1)內


EDITED

此鏈接還提供有關管理users/groups/realms信息。

http://geronimo.apache.org/GMOxDOC20/administering-users-and-groups.html

+1

所有的servlet容器提供基本的,並形成基於你的身份驗證的實現。 @edubriguenti向您提供了geronimo的相關文檔鏈接。大多數情況下,這將用於您的目的 - 使用零行代碼。 –

1

可以使用pac4j library,以方便您的工作。 pac4j支持多種身份驗證機制(表單,Facebook,CAS ...)。

你的問題似乎表明,你正在尋找類似的形式或HTTP基本驗證了一些簡單的機制。在這種情況下,您只需實現UsernamePasswordAuthenticator接口,並依靠包含用戶名/密碼對的文件。記住提交電線上的憑據時保存機密性和完整性總是使用HTTPS

看看在j2e demo webapp看到pac4j在J2E背景下如何整合。