web.xml详情配置
? <user username="both" password="tomcat" roles="tomcat,manager"/>
? <user username="admin" password="admin" roles="admin"/>
</tomcat-users>
此XML片段包括一个tomcat-users根元素,它包含一个或多个role和user元素。
然后在Web应用程序的web.xml中创建security-constraint、login-config和security-role元素。
<security-constraint>
? ??? <web-resource-collection>
? ??? ??? <web-resource-name>HelloServlet</web-resource-name>
? ??? ??? <url-pattern>/HelloServlet</url-pattern>
? ??? ??? <http-method>GET</http-method>
? ??? ??? <http-method>POST</http-method>
? ??? </web-resource-collection>
? ??? <auth-constraint>
? ??? ??? <description>This applies only to the "tomcat" security role</description>
? ??? ??? <role-name>admin</role-name>
? ??? </auth-constraint>
? ??? <user-data-constraint>
? ??? ??? <transport-guarantee>NONE</transport-guarantee>
? ??? </user-data-constraint>
? </security-constraint>
??
? <login-config>
? ??? <auth-method>BASIC</auth-method>
? </login-config>
? <security-role>
? ??? <role-name>admin</role-name>
? </security-role>
其中security-constraint元素包含一个或多个web-resource-collection元素,它是描述Web应用程序中的哪些web资源受到指定安全限制的保护。http-method元素指定安全限制覆盖的HTTP方法。上面的例子中,当我们对/HelloServlet的GET或POST请求时将触发配置的安全机制。
auth-constraint元素用于描述允许访问Web组件的安全角色。此例中安全角色的例子有tomcat、manager、admin。而只有当作为admin角色的用户才可以访问HelloServlet。
Web应用程序通过login-config元素来认证用户,并确认该用户是否为正确的角色。
longin-config包含的transport-guarantee子元素用来指定认证方法,BASIC是一种常见的Web认证方式,浏览器给用户提示一个对话框,要求输入用户名和密码,随后Tomcat将给出的用户名和密码与tomcat-users.xml中的用户名和密码进行比较,然后使用前面的security-constraint配置来确定用户是否可访问受保护的servlet。
(除BASIC外,还可以是FORM、CLIENT-CERT、DIGEST等)
其实这种认证方法实际上有两个步骤:
1、检查提供的用户名和密码是否正确。
2、判断用户是否映射到特定的安全角色。例如,用户可能提供了正确的用户名和密码,但没有映射到特定的安全角色,也将被禁止访问特定的Web资源。