Serlvet规范中定义 用于配置Web资源安全约束的部署描述符,其配置是独立于Web容器。我们在前面的博客中讲到了Tomcat中安全域的实现。推而广之,我们的web应用的资源安全约束是完全跨Web容器的,只要支持JSP/Servlet的Web容器就可以根据其配置文件web.xml中利用<security-role>,<security-constraint>和<login-config>三个元素进行配置,其配置过程可以分为以下三步:
1、使用<security-role>元素声明在当前web应用中使用的安全角色名。
2、使用<security-constraint>元素声明受保护的web资源及其能够访问受保护资源的角色和HTTP协议。
3、使用<login-config>元素声明服务器将采用哪种类型的验证方式来提示访问者输入身份信息和进行验证。
下面我们就一个具体的例子进行实现安全约束配置:
一、<security-role>配置:声明在当前web应用中使用的安全角色列表。
子元素:<role-name>:用于指定web应用中的安全角色名称
<security-role>
<role-name>username</role-name>
<role-name>username2</role-name>
</security-role>
<role-name>元素可以出现0次或多次。上例中声明了username和username2两个安全角色。
二、<security-constraint>配置:声明受保护的web资源及其能够访问受保护资源的角色和传输协议。
子元素:
1、<web-resource-collection>:声明受保护的web资源,可以出现一次或多次。包含了是三个主要的子元素:
1)、<web-resource-name>:用于标识受保护资源的名称,有且只出现一次。
2)、<url-pattern>:用于指定受保护资源的URL路径,出现一次或者多次。
3)、<http-method>:用于指定受保护的HTTP请求方式(GET、POST等),出现0次或多次。没有出现则所有的HTTP请求方式都受保护。如果用户以指定的请求方式访问受保护的web资源,则要求通过安全验证。
2、<auth-constraint>:声明能够访问受保护资源的角色。可以出现0次或多次。
子元素:
<role-name>:用于指定web应用中的安全角色名称,<role-name>元素可以出现0次或多次。出现多次表示受保护的web资源可以被多个角色访问。如果<role-name>元素的内容为"*",则表示web应用中注册的所有角色都可以访问这个手保护的资源。
3、<user-data-constraint>:指定采用何种通信方式传输受保护的资源。可以出现0次或多次。
子元素:
<transport-guarantee>:值可选为NONE、INTEGRAL和CONFIDENTIAl。其中NONE表示不加密的普通方式传输被访问资源;INTEGRAL和CONFIDENTIAl两个值在当前版本的Servlet规范中区别不大,都只是简单地要求使用SSL方式对数据inxing加密传输,即只通过HTTPS协议访问受保护的Web资源。
<security-constraint>
<web-resource-collection>
<web-resource-name>webapp</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
<url-pattern>/html/*</url-pattern>
<url-pattern>/list</url-pattern>
<url-pattern>/sessions</url-pattern>
<url-pattern>/start</url-pattern>
<url-pattern>/stop</url-pattern>
<url-pattern>/install</url-pattern>
<url-pattern>/remove</url-pattern>
<url-pattern>/deploy</url-pattern>
<url-pattern>/undeploy</url-pattern>
<url-pattern>/reload</url-pattern>
<url-pattern>/save</url-pattern>
<url-pattern>/serverinfo</url-pattern>
<url-pattern>/status/*</url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.html</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: This role is not present in the default users file -->
<role-name>manager</role-name>
<role-name>username</role-name>
</auth-constraint>
</security-constraint>
例中说明这个Web应用中的所有JSP页面和HTML页面和其他的一些文件都可以被属于manager或username角色身份的用户以GET请求方式访问。
三、<login-config>配置:声明当用户访问受保护的web资源时,web服务器将采用哪种类型的验证方式来提示访问者输入身份信息和进行验证。
子元素:
1、<auth-method>:指定验证类型。可选值为BASIC、DIGEST和FORM。BASIC指浏览器弹出登录信息输入框和将用户的验证信息采用base64算法编码后传送给web服务器;DIGEST指浏览器也弹出登录信息输入框和将用户信息通过MD5算法进行加密后传送给web服务器(这需要浏览器支持MD5的加密算法);FORM则使用web开发人员自定义的表单页面来输入和验证用户信息,使用FORM验证时,才需要且要求必须定义<form-login-config>元素。<form-login-config>元素包含了两个必须的元素<form-login-page>和<form-error-page>来分别指定开发人员自定义的登录页面和登录错误处理页面。
2、<realm-name>:安全域的名称。
3、<form-login-config>:使用FORM验证时,才需要且要求必须定义<form-login-config>元素
BASIC和DIGEST:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
FORM:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-config>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
当验证方式为FORM时,还必须在自定义的登录表单的action属性值必须设置为伪路径"j_security-check",用户名和密码的字段名必须命名为"j_username"和"j_password".
<HTML>
<HEAD>
<TITLE> login.html </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="j_security_check">
用户名:<INPUT TYPE="text" NAME="j_username" /><BR>
密码:<INPUT TYPE="text" NAME="j_password" /><BR>
<INPUT TYPE="submit" value="提交" />
<INPUT TYPE="reset" value="重置" />
</FORM>
</BODY>
</HTML>
最后,对于以上三种验证方式,在web.xml文件中配置的安全约束只对客户端直接请求的资源(包括使用HttpServletResponse.sendRedirect方法重定向的资源)进行保护,即只有用户直接请求的URL与<url-pattern>元素的内容匹配时,安全约束才有效。而对于Web应用中使用forward或include方式转发或者包含的相应页面,安全约束不会生效。
分享到:
相关推荐
REST的架构约束 REST的五个关键词 REST风格架构的主要特征 REST风格架构的设计步骤 REST与安全性 REST风格架构带来的好处 关于HTTP的一些误解 关于REST的一些误解 各种编程语言对于REST的支持 REST与Web服务 REST与...
请参阅以下http://goo.gl/qDNGP7-集成模块的静默安装命令行:LocalExplorer-Setup.exe / S ================ ===== ---如何设置---出于安全原因,Google制定了一项政策,不允许网页读写硬盘上的本地资源。...
针对Web资源访问的特点和安全问题,研究了传统的RBAC (Role-Based Access ...该扩展模型弥补了传统RBAC基于静态角色分配的不足,实现了角色的动态分配,并对规则和角色分配进行了约束,提高了Web资源访问的效率和安全性.
在公司的局域网内我们可以综合采用防火墙技术 、Web页面保护技术、入侵检测技术、安全评估技术来保护网络内的信息资源,防止黑 客攻击。 2。7病毒的攻击 计算机病毒一直是计算机安全的主要威胁.现在很多病毒都是...
工作权责 服务器上的维护内容有如下几点: 操作系统安装与配置,服务器安全设置,补丁更新,系统安全检测 WEB服务(IIS)安装与配置,ASP/ASPX网站配置,数据库(MSSQL)安装与配置 主站网站维护(网站) 网站...
本资源提供了一个基于ASP.NET的信息安全研究所设备管理系统的完整解决方案,包括源代码和详细设计论文。该系统旨在满足信息安全研究所在设备采购、分配、维护和管理方面的需求,通过信息化手段提高设备管理的效率和...
使用Restful API风格, Restful API的优势是具备更好的易用性,让异构系统更容易...Web上可用的每种资源-HTML文档、图像、视频片段、程序等-由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据...
5.6 资源约束 5.7 小结 第二部分 第6章 自动化测试和测试数据生成 6.1 自动化测试的价值 6.2 有用的工具和库 6.2.1ETHEREAL /WIRESHARK 6.2.2LIBDASM 和LIBDISASM 6.2.3LIBNET /LIBNETNT 6.2.4LIBPCAP 6.2.5...
例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文索引支持,适用于读多写少的场景。这种多引擎架构使得MySQL能够适应不同业务需求,提供高度...
基于标准的Web服务,应用推模式,实现资源的有效监视;根据系统的状态和任务之间的通信关系,采用成本约束的自适应调度算法,实现系统的动态调度和负载平衡;采用WSSecurity扩展实现网格的安全,既可以保证网格的...
2.2.1 解决方案资源管理器 28 2.2.2 文档窗口 29 2.2.3 工具箱 29 2.2.4 错误列表和任务列表 30 2.2.5 服务器资源管理器 31 2.3 代码编辑器 32 2.3.1 添加程序集引用 33 2.3.2 智能感知和大纲显示 ...
例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文索引支持,适用于读多写少的场景。这种多引擎架构使得MySQL能够适应不同业务需求,提供高度...
延迟、增强安全性、封装遗留系统的中间组件(intermediary components)。我描述了指导 REST的软件工程原则和选择用来支持这些原则的交互约束,并将它们与其他架构风格的约 束进行了对比。最后,我描述了从在超文本...
例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文索引支持,适用于读多写少的场景。这种多引擎架构使得MySQL能够适应不同业务需求,提供高度...
延迟、增强安全性、封装遗留系统的中间组件(intermediary components)。我描述了指导 REST的软件工程原则和选择用来支持这些原则的交互约束,并将它们与其他架构风格的约 束进行了对比。最后,我描述了从在超文本...
这篇论文定义了一个框架,致力于通过架构风格来...最后,我描述了从在超文本转移协议(HTTP)和统一资源标识符(URI)的标准中应用REST,以及从这两个标准在Web客户端和服务器软件的后续部署等过程中学到的经验教训。
Win,Mac,Linux,Unity WebPlayer,WebGL,iOS,Android, Windows Phone,Windows Store,PS Vita(PSM),PS4,Xbox One,Nintendo Switch +更多(没有测试其他平台但它应该工作除了使用Flash导出以外的所有...
通用服务器虚拟化解决方案 - 1 - 1 ... 提升提高资源利用率、简化运维管理 EASTED虚拟化是资源的逻辑表示,不受物理资源限制的约束,通过在单台物理服务器上运行多个虚拟应用系统,并支持资源的动态分配,这些虚拟机可