水平有限
于应用安全来说,推荐使用声明式的安全模型。(For application security it is highly recommended that you use the declarative JEE Servlet path role based security model. 不会译)而Click pages提供一个onSecurityCheck()方法让你使用编程的方式控制安全模型,声明式的JEE模型有很多优势。
这些优势包括:
- 它是业界的标准模式,使开发和维护更简单。
- 应用服务器通常提供多种安全基础结构的集成方式,包括LDAP目录和关系型数据库。
- Servlet安全模型支持用户bookmark页面,当用户以后访问这些页面时,容器会在允许他们访问这些资源之前,自动的认证他们。
- 使用声明式安全模型,可以使你的Page类不需要关心安全问题。这使代码的重用性更高,或者至少更容易编写。
如果你的应用有更高的安全要求,你可以混合使用声明式和编程式来达到你的要求。在这样的情况下,推荐使用声明式控制粗粒度的访问和编程式控制细粒度的访问(In these cases its recommended you use declarative security for course grained access and programmatic security for finner grained access control.)。
声明式
这种方式需要用户被认证并且是合适的角色,在他们可以访问受保护的资源。和许多JEE相比,Servlet安全模型是出奇的简单。
例如限制admin页面,在web.xml中加入安全限制。这要求用户是admin角色,在他们可以访问admin目录下的任何资源。
<security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
应用的用户角色在web.xml中定义,使用security-role元素。
<security-role>
<role-name>admin</role-name>
</security-role>
Servlet安全模型支持3种不同的认证方法:
- BASIC- 只推荐在安全不重要的内部应用中使用。这是最简单的认证方法,在用户可以访问受限资源前,会显示一个对话框要求认证用户。BASIC方法是相对不安全的,因为用户名和密码会被转为64位编码传回服务器。
- DIGEST-推荐在安全程度适中的内部应用中使用。和BASIC方式一样,在用户可以访问受限资源前,会显示一个对话框要求认证用户。不是所有的应用服务器都支持DIGEST认证,只有最近的版本的Apache Tomcat支持。
- FORM-推荐使用在需要定制登录页面的应用中。需要高安全度的应用推荐使用在HTTPS上的FORM方式。
认证方式使用<login-method>元素指定。例如使用BASIC方式你可以这样指定:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Admin Realm</realm-name>
</login-config>
使用FORM方式,也需要指定登录页面和登录错误页面的路径:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Secure Realm</realm-name>
<form-login-config>
<form-login-page>/login.htm</form-login-page>
<form-error-page>/login.htm?auth-error=true</form-error-page>
</form-login-config>
</login-config>
在login.htm页面你需要包括一个特殊的有j_username和j_password输入字段的j_security_check表单,例如:
#if ($request.getParameter("auth-error"))
<div style="margin-bottom:1em;margin-top:1em;color:red;">
Invalid User Name or Password, please try again.<br/>
Please ensure Caps Lock is off.
</div>
#end
<form method="POST" action="j_security_check" name="form">
<table border="0" style="margin-left:0.25em;">
<tr>
<td><label>User Name</label><font color="red">*</font></td>
<td><input type="text" name="j_username" maxlength="20" style="width:150px;"/></td>
<td> </td>
</tr>
<tr>
<td><label>User Password</label><font color="red">*</font></td>
<td><input type="password" name="j_password" maxlength="20" style="width:150px;"/></td>
<td><input type="image" src="$context/images/login.png" title="Click to Login"/></td>
</tr>
</table>
</form>
<script type="text/javascript">
document.form.j_username.focus();
</script>
在使用基于FORM方式的认证不要把应用逻辑写在Click的登录Page类中,因为它的角色只是简单的呈现登录表单。如果你试图把跳转逻辑放入,JEE容器可能会忽略或抛出错误。
把下面的是web.xml的片段,制定在admin和user路径下的安全限制。使用FORM方式认证,
并会将未认证的请求(403)转发到/not-authorized.htm。
<web-app>
..
<error-page>
<error-code>403</error-code>
<location>/not-authorized.htm</location>
</error-page>
<security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>user</web-resource-name>
<url-pattern>/user/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Secure Zone</realm-name>
<form-login-config>
<form-login-page>/login.htm</form-login-page>
<form-error-page>/login.htm?auth-error=true</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
</web-app>
可选的安全方案
也有可选的安全方案提供额外的JEE中不可用的特性,像RememberMe功能,更好的资源映射和支持Post Logon Page。(Post Logon Page允许用户成功登陆后会被转发到一个指定默认的URL,这个特性允许把登录表单嵌在所有非受限页面,并且在成功认证后,用户会进入他们的主页面。)
可用的可选的安全方案:
资源
关于安全的更多的信息资源:
分享到:
- 2009-03-13 11:07
- 浏览 1008
- 评论(0)
- 论坛回复 / 浏览 (0 / 1703)
- 查看更多
相关推荐
6. **最佳实践** - 使用变量存储重复使用的URL和元素选择器,提高代码可读性和可维护性。 - 编写清晰的测试步骤,每个步骤对应一个关键字,便于理解测试流程。 - 结合Robot Framework的其他库,如`...
本文将深入探讨Microsoft .NET Framework 2.0版本在分布式应用程序开发中的核心概念、技术和最佳实践,主要针对70-529考试进行详尽解析。这个框架是微软提供的一套全面的开发平台,它极大地简化了构建、部署和管理...
5. **性能优化**:针对.NET Framework应用程序,本书提供了一些关于如何提高性能的建议和最佳实践。 通过以上对本书核心知识点的详细解析,读者不仅能够系统地学习.NET Framework 3.5版本的应用开发技术,还能为...
- **最佳实践**:分享在实际开发过程中积累的经验教训,帮助读者避开常见的陷阱并提升开发效率。 通过以上内容,我们可以看出《MCTS .NET Framework 2.0 Windows Applications》是一本全面覆盖.NET Framework 2.0...
通过阅读《MS Press - 应用微软.NET框架编程》,开发者不仅可以掌握.NET Framework的核心概念和技术,还能学习到最佳实践,以提升软件开发的效率和质量。书中的案例和实践指导将帮助读者将理论知识转化为实际开发...
Click N Mix是一个基于PHP...综上所述,Click N Mix是一个以用户友好和开发者便利为核心的PHP框架,它利用开源精神推动了代码质量和功能的持续提升,同时也强调了Clean Code的最佳实践,以实现高效、可维护的项目开发。
吴穹作为培训师,可能会介绍最佳实践、常见问题和解决策略。 【标签】"RFS"可能是指Robot Framework Suite,它是一组相关的测试套件,组织成一个可执行的测试结构。在Robot Framework中,测试套件是最高级别的组织...
#### 五、最佳实践 - **遵循 Human Interface Guidelines**:确保应用程序界面简洁明了,易于理解和使用。 - **优化性能**:减少不必要的视图重绘和计算开销,避免内存泄漏等问题。 - **国际化与本地化**:支持多种...
文件“Apache-Click-Framework-PickList-control-client-Jav.pdf”可能详细介绍了如何在实际项目中运用PrototypeJS和Apache Click框架来实现PickList的客户端控制,包括具体的代码示例、配置方法和最佳实践。...
通过学习这个系列课程,开发者将掌握智能客户端开发的关键技术和最佳实践,从而能够构建出满足用户需求、性能优越的桌面应用程序。此外,课程可能还会讨论如何将现有Web应用迁移到智能客户端模型,以及如何在团队中...
**分布式智能客户端应用程序开发最佳实践** 在现代软件开发领域,智能客户端应用程序因其高效、离线功能和丰富的用户体验而备受青睐。本系列课程聚焦于“Smart Client”技术,旨在帮助开发者掌握构建分布式智能...
4. **Office 开发的最佳实践**:讨论在 Office 开发中需要注意的性能优化、错误处理和调试技巧,确保解决方案既高效又稳定。此外,还会涉及安全性问题,如代码签名和权限管理。 5. **案例研究**:通过实际的项目...
- 安全编程的最佳实践 **章节33:并行编程使用任务与线程** - **知识点**: - 并行计算与多核处理器 - Task Parallel Library (TPL) - 并发集合与同步上下文 - 异步编程模型 (APM) **章节34:部署** - **...
10. **设计模式和最佳实践**:书中可能涵盖了一些常见的设计模式,如工厂模式、单例模式等,以及.NET开发的最佳实践,以提高代码的可维护性和可扩展性。 通过这个自学习课程,读者将不仅能够准备考试,还能获得实际...
通过阅读这份手册,用户将能深入了解Robot Framework的工作原理,并掌握实际操作中的技巧和最佳实践。 总而言之,Robot Framework结合了Python语言的优势,提供了一种高效、灵活且易于理解的自动化测试解决方案。...
2. **阅读文档**:如果有的话,文档会介绍框架的使用方法、API接口以及最佳实践。 3. **学习示例**:通过运行和修改示例代码,了解框架的工作原理和使用方式。 4. **分析源码**:如果框架没有提供详尽的文档,可以...
综上所述,这部分考试内容涵盖了SQL Server的视图操作、CLR函数的安全配置、SSMS的使用技巧以及数据库安全的最佳实践。理解并熟练掌握这些知识点对于通过MCTS 70-431考试以及日常的数据库管理工作至关重要。
5. **最佳实践** - 定义清晰的测试套件结构,将相关测试用例组织在一起。 - 编写可重用的关键字,提高代码复用性。 - 制定良好的命名规范,使测试用例易于理解和维护。 - 利用Robot Framework的报告和日志功能,...
它不仅详细介绍了 .NET 2.0 平台的各项特性和 C# 语言的最佳实践,还深入探讨了设计模式、测试方法以及安全性和性能优化等方面的知识。通过阅读本书,开发者可以提升自己的技能水平,构建出更加高效、稳定的应用程序...