2

我将 JDBCRealm 用于 Tomcat 7 用户身份验证,将 SSL 用于 https,但我不知道如何组合它们。我的目标是通过 SSL 使所有页面安全,并且只能由特定角色查看。我正在使用 JSF 2.1。这是我在 web.xml 中的代码

<security-role>
    <description/>
    <role-name>employee</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>administrator</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>boss</role-name>
</security-role>

<security-constraint>
    <display-name>ConstraintPrac</display-name>
    <web-resource-collection>
        <web-resource-name>panelprac</web-resource-name>
        <url-pattern>panele/pracownik/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>employee</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

他们似乎分开工作,但我需要的是一种组合方式。现在 Tomcat 不会重定向到端口 8443 (https),​​您只需在浏览器中键入即可访问任何页面。我将此页面用于 SSL http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html,并将此页面用于 JDBCRealm http://tomcat.apache.org/tomcat-7.0-doc/realm- howto.html。我希望我的程序只允许某些角色访问某些页面,同时在 HTTPS 上执行所有操作。请帮我解决这个问题。我不知道我在哪里犯了错误。我没有收到任何错误。

解决

问题比我想象的要深。Tomcat 7 不支持自定义表单用户身份验证,因此上述安全角色不起作用。为了解决这个问题,我必须创建一个过滤器类来保护未经授权的页面访问。

如果有人有同样的问题,我会离开这个话题(如果管理员发现这个话题不相关,请随意删除它)

4

0 回答 0