【问题标题】:Servlet declarative securityServlet 声明式安全
【发布时间】:2012-12-22 20:17:19
【问题描述】:

为了 Servlet 安全,我在 web.xml 中读到我们可以声明

<auth-constraints> and <user-data-constraint> 

用于打开 SSL 和用于身份验证。但到目前为止,我个人还没有在现实生活中的 web.xml(在 Tomcat、Glassfish 上运行的应用程序)中看到任何这些声明

所以我想知道实现这些目标的替代方法是什么?首选哪种方式?

【问题讨论】:

    标签: java jakarta-ee authentication servlets


    【解决方案1】:

    强烈依赖于使用的应用服务器,但一般情况下,如果不在 AS 级别(不是部署描述符)启用 SSL,就无法使应用服务器使用 SSL 公开应用程序。

    例如,对于 Tomcat,必须在 server.xml 中启用 SSL 连接器(默认端口 8443)。然后,您可以使用 Apache (httpd) 作为反向代理,使用 mod_proxymod_jk

    在代码中,您可以使用ServletFilter 拦截所有请求,如果通信不在 SSL 之上,您可以将用户重定向到某个登录页面。

    【讨论】:

    • 例如使用 Tomcat 如何在 web.xml 中不添加任何内容的情况下设置/关闭 Https
    • https = 端口 443。假设您在基于 Unix 的系统上运行它,则只有 root 可以在低于 1024 的端口上运行应用程序侦听。所以第一个选择是修改 $CATALINA_HOME/conf/server.xml。并将ssl连接器的端口更改为443并以root身份运行tomcat。其他选择是使用反向代理。
    • IIRC,必须生成密钥库文件,并且连接器应包含此密钥库文件的路径。您可能会发现以下链接有用tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
    【解决方案2】:

    首先你声明角色,可以通过注解或在 web.xml 中进行:

    @DeclareRoles("userRole")
    public class SomeServlet extends HttpServlet {
    ...
    }
    

    然后您将&lt;security-constraint&gt; 添加到您的web.xml

      <security-constraint>
            <display-name>SecurityConstraint</display-name>
            <web-resource-collection>
                 <web-resource-name>SomeServlet</web-resource-name>
                <url-pattern>/some_servlet</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>userRole</role-name>
            </auth-constraint>
            <user-data-constraint>
                 <transport-guarantee>NONE</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>file</realm-name>
        </login-config>
    

    &lt;url-pattern&gt; 是要保护的模式。

    对于 SSL,您将 CONFIDENTIAL 放入 &lt;transport-guarantee&gt;

    【讨论】:

    • tnx 但我的问题更多是如何打开 HTTPS,设置身份验证模式而不触及 web.xml,例如在 tomcat 和 glassfish 中
    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2013-06-15
    相关资源
    最近更新 更多