Java Web的安全验证机制
来源:互联网 发布:php中面向对象的机制有 编辑:程序博客网 时间:2024/05/16 19:49
security-constraint
部署描述符中的security-constraint元素允许不通过编程就可以限制对某个资源的访问。
<!ELEMENT security-constraint (display-name?,web-resource-collection+,auth-constraint?, user-data-constraint?)><!ELEMENT display-name (#PCDATA)><!ELEMENT web-resource-collection (web-resource-name, description?,url-pattern*, http-method*)><!ELEMENT auth-constraint (description?, role-name*)><!ELEMENT user-data-constraint (description?, transport-guarantee)>
(1) web-resource-collection元素
web-resource-collection元素标识需要限制访问的资源子集。在web-resource-collection元素中,可以定义URL模式和HTTP方法。如果不存在HTTP方法,就将安全约束应用于所有的方法。
<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)><!ELEMENT web-resource-name (#PCDATA)><!ELEMENT description (#PCDATA)><!ELEMENT url-pattern (#PCDATA)><!ELEMENT http-method (#PCDATA)>
web-resource-name是与受保护资源相关联的名称。http-method元素可被赋予一个HTTP方法,比如GET和POST。
(2) auth-constraint元素
auth-constraint元素用于指定可以访问该资源集合的用户角色。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。
<!ELEMENT auth-constraint (description?, role-name*)><!ELEMENT description (#PCDATA)><!ELEMENT role-name (#PCDATA)>
(3) user-data-constraint元素
user-data-constraint元素用来显示怎样保护在客户端和Web容器之间传递的数据。
<!ELEMENT user-data-constraint (description?, transport-guarantee)><!ELEMENT description (#PCDATA)><!ELEMENT transport-guarantee (#PCDATA)>
transport-guarantee元素必须具有如下的某个值:
NONE,这意味着应用不需要传输保证
INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变。
CONFIDENTIAL,这意味着传输的数据必须是加密的数据。
在大多数情况下,安全套接字层(SSL)用于INTEGRAL或CONFIDENTIAL
security-role
security-role元素指定用于安全约束中的安全角色的声明。
<!ELEMENT security-role (description?, role-name)><!ELEMENT description (#PCDATA)><!ELEMENT role-name (#PCDATA)>
注意:security-constraint中的role-name和security-role是没有关系的
在tomcat中,有没有设定security-role是没有关系的
在其他商业应用服务器,如Weblogic, Jboss上,通常会设定security-role,以便在security-constraint中引这些security-role
参考链接:http://sz.szpxe.com/article/view/17038
login-config
login-config元素用来指定所使用的验证方法、领域名和表单验证机制所需的特性。
<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)><!ELEMENT auth-method (#PCDATA)><!ELEMENT realm-name (#PCDATA)><!ELEMENT form-login-config (form-login-page, form-error-page)>
login-config子元素的描述如下:
(1) auth-method指定验证方法。它的值为下面的一个:BASIC、DIGEST、FORM或 CLIENT-CERT
BASIC, HTTP规范,Base64,这种方式被认为是最不安全的认证,因为它没有提供强烈的加密措施
<web-app> ...... <login-config> <auth-method>BASIC</auth-method> </login-config> ...... </web-app>
DIGEST:HTTP规范,MD5,它是种比较安全的认证,它在认证时将请求数据 通过MD5的加密方式进行认证
<web-app> ...... <login-config> <auth-method>DIGEST</auth-method> </login-config> ...... </web-app>
CLIENT-CERT:J2EE规范,公共钥匙(PKC),这是一种基于客户端证书的认证方式,比较安全。但缺陷是在没有安全证书的客户端无法使用。
<web-app> ...... <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config> ...... </web-app>
FORM:J2EE规范,数据完整性非常弱,没有加密,允许有定制的登陆界面
<web-app> ...... <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.html</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> ...... </web-app>
(2) realm-name指定HTTP Basic验证中使用的领域名。
(3) form-login-config指定基于表单的登录中应该使用的登录页面和出错页面。如果没有使用基于表单的验证,则忽略这些元素。这个元素的定义如下,其中form-login-page用于指定显示登录页面的资源路径, form-error-page则用于指定用户登录失败时显示出错页面的资源路径。这两个页面路径都必须以a/开始,并与应用目录相对应。
<!ELEMENT form-login-config (form-login-page, form-error-page)><!ELEMENT form-login-page (#PCDATA)><!ELEMENT form-error-page (#PCDATA)>
值得注意的是,FORM认证的表单中,一些元素的属性必须是固定的,如:
表单的action=“j_security_check”, 表单提交方式method=”post”,用户名输入框name=”j_username”,密码输入框name=”j_password”
<form action="j_security_check" method="post" > <input name="j_username" type="text"> <input name="j_password" type="password"> <input type="submit" value="login" > </form>
案例:
<security-constraint> <display-name>Login Page</display-name> <web-resource-collection> <web-resource-name>Login Page</web-resource-name> <url-pattern>/login.jsp</url-pattern> <http-method>GET</http-method> <http-method>PUT</http-method> <http-method>POST</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint> <description>Everyone</description> <role-name>everyone</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint></security-constraint><security-role> <description>Everyone</description> <role-name>everyone</role-name></security-role><login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.html</form-error-page> </form-login-config></login-config>
文章参考:
http://www.360doc.com/content/11/0926/15/1485725_151371486.shtml
http://blog.csdn.net/lisheng19870305/article/details/40819481
http://www.cnblogs.com/suxiaolei/archive/2011/11/02/2233601.html
http://czh.iteye.com/blog/740138
http://blog.csdn.net/yangjun2/article/details/8211492
- Java Web的安全验证机制
- 自己构建的一个WEB安全验证机制
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- Web应用程序的安全机制
- JAVA的安全机制
- Axis2+SOAP Header验证方法实践(基于SOAP的Web安全调用机制)
- 基于SOAP的Web安全调用机制-----Axis2+SOAP Header验证方法实践【已经试验】
- 谈Java的安全机制
- java安全机制的理解
- Java EE的安全机制
- WEB表单安全验证
- web安全核心机制
- Web Service安全机制探讨-Java基础-Java-编程开发
- Java安全验证之jwt(json web token)实践
- Java安全验证之jwt(json web token)
- JAAS:灵活的Java安全机制(1)
- JAAS:灵活的Java安全机制(2)
- JAAS:灵活的Java安全机制(3)
- PHP页面间参数传递
- jmeter集群压测搭建
- Spring AOP详解 、 JDK动态代理、CGLib动态代理
- java.lang.NullPointerException空指针错误调试
- 人生第一站——2017ACMICPC西安regional
- Java Web的安全验证机制
- OM4 vs. OM5: What’s the Difference?
- json
- SVN之VisualSVN-Server简单使用-yellowcong
- JavaScript基础知识
- 继承和多态
- jQuery的Chaining方法
- java常用正则表达式
- bzoj 4408 [Fjoi 2016]神秘数 主席树