|
|
Sun Java System Application Server 7 Web应用开发者指南 Web应用安全性 该模块描述了如何为Sun Java System Application Server编写安全的Web应用,该应用带有能执行用户认证和存取特许的组件。 该模块包含下面几节: Servlet的用户认证Sun Java System Application Server支持J2EE规范V1.3需要的基于web的登录机制。该机制包括: web.xml 部署描述文件文件中的login-config 元素描述了使用的认证方法,HTTP基本认证显示的应用域名和表单登录机制的属性。 login-config 元素语法如下: <!ELEMENT login-config (auth-method?,realm-name?,form-login-config?)>
如果想获得关于web.xml 元素的更多信息,请参考第13章,Java Servlet规范v2.3的“部署描述文件”。 如果想获得sun-web.xml 元素的更多信息,请参考"装配和部署Web组件" 如果想获得编程登录的更多信息,请参考Sun Java System Application Server开发者指南。 HTTP基本认证Sun Java System Application Server支持HTTP基本认证(RFC2068)。由于密码是通过base64 编码发送的,因此该认证类型并不很安全。为了保护传送中的密码,推荐在传送时使用SSL或其他相等的传送加密。 SSL相互认证安全套接层协议(SSL) 3.0和执行基于证书的相互认证的方法是J2EE 规范 v1.3的需求。该安全机制提供了使用HTTP的用户认证(HTTP over SSL). Sun Java System Application ServerSSL 相互认证机制 (叫做HTTP认证)支持下列密码组: SSL_RSA_EXPORT_WITH_RC4_40_MD5
HTTP浏览器内嵌机制不能控制登录界面的外观和感觉。J2EE为登录引入了给标准HTML或基于Servlet/JSP的表单打包的能力。登录表单和web保护域相结合(HTTP域) ,用来认证以前没有认证的用户。 由于没有加密就直接传送密码 (除非受到基本传送的保护),该认证类型不是非常安全。推荐在密码传送中,使用SSL或其他同等传送加密来保护密码。 为了确保能正确执行认证,登录表单”action” 域必须总是j_security_check。 下面是一个HTML例子,显示了如何在HTML页面中编写该表单。 <form method="POST"
action="j_security_check"> 你可以指定表单的参数编码。如果想获得详细信息,请参考"parameter-encoding".。 单点登录的用户认证Sun Java System Application Serverservlet和JSP支持Sun ONE Application Server上的应用的单点登录。该性能允许需要相同用户单点登录信息的多个应用相互之间共享该信息,而不需要在各个应用中都进行用户登录。这些应用只需要认证用户一次,在需要这些认证信息的时候,就将这些信息广播给相应的程序。 联合航线订票服务是使用单点登录设想的一个例子应用程序,它查找所有的航线,并提供了到不同航线web站点的链接。一旦用户登录了联合订票服务,该用户信息就能被每个航线站点使用,而不需要用户再次登录。 单点登录操作遵守下列规则: 单点登录应用在配有相同域名和虚拟服务器的web应用。域由web.xml 文件中的realm-name 元素定义。如果想获得虚拟服务器的更多信息,请参考Sun Java System Application Server管理员指南或Sun Java System Application Server管理员配置文件参考。
单点登录特性使用HTTP cookie来传送将每次的请求和保存的用户标识结合起来的标志。所以它只能使用在支持cookie的客户端环境中。 为了配置单点登录,设置server.xml 文件的virtual-server 元素的下列属性:
下面是一个配置的例子,使用的都是默认值: <virtual-server id="server1"
... > 可以配置Servlet,让它仅允许访问处于适当权限层的用户。该节涉及到下列主题: 定义角色在J2EE部署描述文件文件web.xml中定义角色,并将它们映射到相应的Sun Java System Application Server部署描述文件文件sun-application.xml 上(如果是单个部署的Web模块,就映射到 sun-web.xml 上)。如果想获得关于sun-web.xml的更多信息,请参考“装配和部署Web模块”。 sun-application.xml 或 sun-web.xml 文件中的每个security-role-mapping 元素对应了web应用允许的主角或组的角色名。例如,单个部署web模块的sun-web.xml 文件包含下列内容: <sun-web-app> 注意,该例中的role-name 必须和相应的web.xml 文件中security-role 元素的role-name 相匹配。 注意,对于J2EE应用(EAR文件),必须在sun-application.xml 文件中指定映射到该应用模块地所有安全角色。对于单个部署的web模块,通常在sun-web.xml 文件中指定角色。角色可以映射到特定的主角或组(或两个都是)。使用的主角或组名必须是当前默认realm下的有效的主角或组。 定义Servlet授权约束在servlet层,使用web.xml 文件的auth-constraint 元素定义存取许可。 必须使用资源集合上的auth-constraint 元素来识别允许访问资源集合的用户角色。配置servlet授权约束请参照Servlet规范。 获取客户端证书当你启动SSL并需要客户端证书认证时,servlet会访问客户端证书,如下所示: if (request.isSecure()) {
userDn 是完整的用户识别名。 SHTML和CGI的安全为了安全,服务器分析的HTML标签和CGI脚本基于服务器安全配置。在服务器分析的HTML标签和CGI脚本中不能访问下列仅针对J2EE的安全属性:
如果想获得服务器安全配置的更多信息,请参考Sun Java System Application Server管理员安全指南。 上一部分 | 目录 | 下一部分 |
|
||||||||||||||||||||||||||||||||||||||