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方式转发或者包含的相应页面,安全约束不会生效。
分享到:
相关推荐
- 这个元素提供了一个易读的名称,通常用于 GUI 中显示安全约束信息。 #### 三、具体实现步骤 1. **定义 web-resource-collection**: - 在 web.xml 文件中定义一组 URL 模式,例如 `/proprietary/*`。 - 使用 ...
为了配合上述的安全约束和认证机制,还需要在`web.xml`文件中定义角色: ```xml <description>sessionjdbctest <role-name>test ``` 这里定义了一个名为`test`的角色,并为其添加了描述。 #### 六、登录页面...
- **访问控制策略测试**:确保只有授权用户能访问特定资源,设置角色基础的访问控制,并验证所有权限检查。 3. **数据库问题测试**: - **数据库名称和存放位置**:数据库信息不应公开,应加密存储,且数据库应...
【文章摘要】本文探讨了如何基于Linux操作系统构建安全的Linux操作系统和Web系统,重点在于形式化建模和实现方法。由于Linux的开源特性,作者以此为基础设计了一个强化访问控制安全性的系统,通过全面的改进措施解决...
最后,搜狐web应用安全运营体系可能涵盖了从安全策略制定、风险评估、漏洞管理、安全监控到应急响应等一系列安全运营活动。在实际的运营过程中,需要有一套完整的方法和工具来支持每个环节的执行,保障Web应用的安全...
继续配置`web.xml`文件以实现基于角色的安全约束,这与之前JMX控制台的安全配置类似: ```xml <web-resource-collection> <web-resource-name>HtmlAdaptor</web-resource-name> An example security config ...
- `<security-constraint>`:定义安全约束,如`<web-resource-collection>`定义受保护的URL集。 - `<login-config>`:`<auth-method>`指定认证方法,如FORM、BASIC等。 四、最佳实践 - 遵循标准:确保配置符合...
- `<security-constraint>`:定义安全约束,用于实现Web应用程序的安全访问控制。 - `<login-config>`:配置用户认证方式。 - `<resource-ref>`:声明外部资源引用,如数据源。 3. **最佳实践**: - 如果过滤器...
- `<security-constraint>` 元素定义了对Web资源的安全约束。 - `<web-resource-collection>` 指定了受保护的资源集合。 - `<url-pattern>` 定义了这些资源的URL模式。 - `<auth-constraint>` 定义了访问这些...
通过这个文件,你可以设置初始化参数、映射Servlet、配置过滤器、声明安全约束等。 2. **基本结构** `web.xml`的基本结构包括`<web-app>`根元素,里面包含各种配置元素,如`<servlet>`, `<servlet-mapping>`, `...
`security-constraint`元素用于定义安全约束,包括对URL的访问控制策略,配合`login-config`元素使用,确保Web应用的安全性。 #### 19. Login-Config `login-config`元素用于配置身份验证机制,如表单认证、基本...
security-constraint 元素用于定义安全约束,<!ELEMENT security-constraint (web-resource-collection+, auth-constraint?, user-data-constraint?) >。 login-config 元素用于定义登录配置,<!ELEMENT login-...
Java安全管理体系结构允许管理员为Java应用程序设定精细的安全约束。默认情况下,安全管理器是关闭的,但可以随时开启。开启后,所有应用程序在执行特定敏感操作时都需要明确的权限,如创建自定义类加载器或打开套接...
在移动应用开发领域,Hybrid App是一种...通过合理利用WebView和JavaScript Bridge,开发者可以构建出既具有Web开发便利性又拥有原生应用性能的应用程序,同时遵循必要的安全协议和约束,确保应用的安全性和稳定性。
- `<security-constraint>`:定义安全约束,限制对某些资源的访问。 - `<login-config>`:配置应用程序的认证和授权机制,如FORM、BASIC等。 7. **会话配置** - `<session-config>`:设置会话的默认超时时间、...
将带有时间约束的Web服务智能体建模为时间自动机,通过并发组合构成时间自动机网络,并使用UPPAAL模型检查工具对组合Web服务的运行过程进行模拟和验证,从而检测其活性、安全性和死锁等性质。 本文还通过一个实际...
这两种模型在Tomcat容器中用于控制对Web资源的访问权限。 1. **声明性安全模型**: 声明性安全模型主要通过Web应用的部署描述符文件(web.xml)进行配置,允许管理员在不修改应用源代码的情况下,设定用户角色和...
- **约束**:开发者需要遵循金蝶提供的接口规范,尊重系统性能和安全要求,避免过度频繁的请求或不合规的操作。 4. **WebAPI架构** K3 Cloud的WebAPI架构基于以下组件和技术: - **Kingdee.BOS.WebApi....