1

我现在正在研究如何向 Java servlet 添加身份验证。我发现这个示例展示了如何对 servlet 使用身份验证,但这是针对 Tomcat 实现的。我们的生产环境使用 Geronimo。我怎样才能在 Geronimo 中完成同样的事情?

抱歉,前几天刚刚学习了有关 Geronimo 的基础知识,但尚未从高层次上找到如何要求对在 Geronimo 中运行的 servlet 进行身份验证。

4

3 回答 3

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)内部进行配置


已编辑

此链接还提供有关管理users / groups / realms.

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

于 2014-05-21T03:33:09.903 回答
1

您可以使用pac4j 库来方便您的工作。pac4j 支持多种身份验证机制(表单、Facebook、CAS...)。

您的问题似乎表明您正在寻找一些简单的机制,例如表单或 http 基本身份验证。在这种情况下,您只需要实现UsernamePasswordAuthenticator接口并依赖于例如包含用户名/密码对的文件。请记住,在通过网络提交凭据时始终使用HTTPS以保存机密性和完整性。

查看j2e 演示 webapp以了解 pac4j 如何在 j2e 上下文中集成。

于 2014-05-25T11:13:12.077 回答
0

使用安全过滤器,它们是在 servlet 中实现身份验证的最佳方式,因为每个链接的简单身份验证都是这样的(在 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>

如果您对操作使用了约定 .do,则仅对操作使用过滤器(在 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() 方法中编写为 LoginFilter.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() {
}}

这里chain.doFilter(request, response); 让我们顺其自然;否则,用户将被重定向到相应的 jsp。

于 2014-05-20T05:45:28.090 回答