我将 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 不支持自定义表单用户身份验证,因此上述安全角色不起作用。为了解决这个问题,我必须创建一个过滤器类来保护未经授权的页面访问。
如果有人有同样的问题,我会离开这个话题(如果管理员发现这个话题不相关,请随意删除它)