J2EE保险应用_web.xml的安全配置
J2EE安全应用___web.xml的安全配置
------------------tomcat .5.5 测试可用----------------阅读声明: 本次案例,使用tomcat的tomcat-users.xml文件
tomcat-users.xml提供了安全领域,这个文件会在tomcat启动时加载进内存,它足够用来
测试安全的配置效果。文件有如下内容:(如果没有,请复制到tomcat的conf文件夹)
------我们可以看到,上面声明的一些角色role,并定义的几个用户user-----
------不难发现,一个用户可以有多种角色 ---------------------------
然后是web.xml配置以下信息:
---------从上,你应该可以知道,这段XML保护的是应用上下文下security文件夹的资源
(应用上下文,对应你项目名称) ------------
你可以将我的配置复制:
并在上下文下新建security文件夹,随便建一个html
并,建立对应的 login.html 和 error.html(当然,JSP和随便的命名是允许的,)但是---------------------
注意:login.html有三个固定的元素,以下是我的html(如果你用JSP,请对j_security_check进行编码
上面的其中几个元素,有特殊规则如下
------------------tomcat .5.5 测试可用----------------阅读声明: 本次案例,使用tomcat的tomcat-users.xml文件
tomcat-users.xml提供了安全领域,这个文件会在tomcat启动时加载进内存,它足够用来
测试安全的配置效果。文件有如下内容:(如果没有,请复制到tomcat的conf文件夹)
<tomcat-users> <role rolename="Admin" /> <role rolename="Guest" /> <role rolename="Member" /> <user username="Annie" password="admin" roles="Admin,Member,Guest" /> <user username="Diane" password="coder" roles="Member,Guest" /> <user username="Ted" password="newbie" roles="Guest" /> </tomcat-users>
------我们可以看到,上面声明的一些角色role,并定义的几个用户user-----
------不难发现,一个用户可以有多种角色 ---------------------------
然后是web.xml配置以下信息:
<!-- 配置安全验证方式:1:BASIC-自己弹出对话框 2:FORM-自定义登录界面 --> <login-config> <!-- <auth-method>BASIC</auth-method> <realm-name>Random</realm-name>>--> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.html</form-login-page> <form-error-page>/error.html</form-error-page> </form-login-config> </login-config> <!-- 角色:来源tomcat-users.xml的<role>元素 --> <security-role> <role-name>Admin</role-name> </security-role> <security-role> <role-name>Member</role-name> </security-role> <security-role> <role-name>Guest</role-name> </security-role> <!-- 指定角色特有资源--> <security-constraint> <web-resource-collection> <!--这个名字是必要的,虽然你不会看到它的显示调用 --> <web-resource-name></web-resource-name> <!-- 指定受约束的资源(可以多个) --> <url-pattern>/security/*</url-pattern> <!-- GET POST请求是受约束的 可以为:PUT/TRACE/DELETE/HEAD/OPTIONS--> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <!-- 授权给角色Admin Member,也就是拥有这两个角色其中之一的 用户,通过GET/POST 可以访问前面指定的授权资源。 --> <auth-constraint> <role-name>Admin</role-name> <role-name>Member</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint>
---------从上,你应该可以知道,这段XML保护的是应用上下文下security文件夹的资源
(应用上下文,对应你项目名称) ------------
你可以将我的配置复制:
并在上下文下新建security文件夹,随便建一个html
并,建立对应的 login.html 和 error.html(当然,JSP和随便的命名是允许的,)但是---------------------
注意:login.html有三个固定的元素,以下是我的html(如果你用JSP,请对j_security_check进行编码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <!--看到了没 j_security_check j_username j_password--> <body> <form action="j_security_check" method="POST"> <input type="text" name="j_username"> <input type="password" name="j_password"> <input type="submit" value="Enter"> </form> </body> </html>
上面的其中几个元素,有特殊规则如下
特殊规则: <role-name>:如果存在一个<auth-constraint>元素,却没有任何<role-name>,那么所有的 用户都遭到拒绝.就算有其它的<auth-constraint>也如此(注:<auth-constraint>可以配置 多个 <auth-constraint>:如果不存在,容器允许不经认证就能访问这些URL <security-constraint>:可以多个,也导致它在可以出现同时两个对资源进行限制且请求 方式相同但限制指定角色不同 而这些不同在<auth-constraint>中,有以下四种情况: 1: Guest + Admin = (Guest,Admin) 2: Guest + * = (*) //即所有人 3: <auth-constraint/> + admin = ()//即没有人 4: 没<auth-constraint> + Admin = (*)//所有人