基于JSP技术实现认证授权

时间:2022-08-18 09:46:48

基于JSP技术实现认证授权

摘要:认证授权包含身份验证和访问授权。身份验证最典型的做法是要求用户输入己注册过的用户名和密码来识别;访问授权的基础是通过安全的web.xml中定义、和元素来实现的。而通过表单的身份认证结合访问授权的实现步骤在文中作了简单的论述。

关键词:JSP;认证;授权

认证授权包含身份验证和访问授权,身份验证用来确认用户确实是其所声称的那个人。身份验证最典型的做法是要求用户输入己注册过的用户名和密码来识别;而访问授权则是与身份验证紧密相关的安全机制,使不同用户能够访问网站的内容及享有的网站服务不同。当通过身份验证后,访问授权机制可以保证该用户只能访问被允许访问的范围。

用户对应于应用程序中的一个账号,具有用户名和口令。用户组是多个用户组成的集合,把具有类似访问系统资源权限的一组用户定义到一个用户组中。角色是抽象化的逻辑概念,与用户组类似,由应用程序开发人员定义。例如:在一个Web应用程序中,定义一个角色及该角色的访问权限,最后把此角色与Web服务器安全域中的实际用户或用户组对应起来。引入角色的意义在于让应用程序的安全逻辑独立于底层平台。通过为Web资源设置安全约束,指定某种Web资源只能被哪些角色访问。要实现这样的约束,就可以通过身份验证和访问授权相结合实现。

1 访问授权各元素的内容组成及设置方法

访问授权的基础,是通过web.xml中定义、和元素来实现的。

(1) 指明Web应用程序中哪些资源受保护,哪些角色可以访问这些受保护的资源。

(2) 指定Web用户访问受保护的资源时系统验证用户端的类型,表现为登录时不同的登录对话框。

(3) 指明Web应用程序中定义的所有安全角色。应用程序部署时在Web服务器的安全域中定义具体的用户、用户组,以及用户(用户组)到安全角色的映射关系。

2 验证中的主要类型

验证中的两种主要类型为基本验证和表单验证。

(1) 基本验证方式(Basic Autheneication)

可用定义。通常被认为是不安全的,因为它没有强健的加密方法,网络管理员能截取(或滥用)用户的密码。

(2) 表单验证方式(Form Authentication)

基于表单的身份验证是Servlet规范所独有的,并由Servlet容器自身来实现。由于同样的原因,基于表单的身份验证也是不可靠的,用户的身份证明将以纯文本格式经由网络发送。为了保护某些敏感的资源,它必须与SSL这样的加密机制组合使用。

与基本身份验证不同,基于表单的身份验证允许控制登录页面的外观,使用这种验证方式的好处是可以对程序有更进一步的控制。使用表单验证方式进行Web应用程序的身份验证需要开发人员定义一个登录页面和登录失败的错误处理页面,登录页面可以是HTML、JSP或Servlet,它允许用户输入用户名和密码;错误处理页面应该将验证失败的信息反馈给用户。

3 基于表单的身份认证结合访问授权的实现步骤

(1) 编写登录页面和错误处理页面

在Web应用程序的欢迎页面中添加到登录页面的超链接,提示用户首先登录。登录页面是一个带有表单的普通HTML文件。其中包含两个必需的输入字段,即j_username和j_password,而且action应设置为字符串j_security_check。

(2) 在web.xml中定义元素

需要定义安全角色,安全约束及登录页面,当用户请求一个保护的资源时将显示登录表单,提示用户输入用户名和密码。属性的值j_security_check是一个特殊的URI。当用户提交表单时,容器将使用j_username和j_password参数值验证用户身份。如果通过,则把浏览器重定向到用户请求的资源;否则将返回错误页面。

(3) 为Web资源进行访问授权

首先定义实现资源访问的限制,在security所属的Web应用程序目录的WEB_INF下的Web.xml中增加。用户以DELETE、GET、POST、PUT的方式访问/security/protected/下的资源时要进行安全验证,只有属于admin角色和注册用户才可以通过验证。

(4) 在安全域中映射关系

通过Web的安全域来配置用户或用户组到安全角色的映射关系。安全域一般包括:内存域、数据库安全域、数据源域、JNDI域。配置安全域是通过定义server.xml中的来实现的,该元素可以嵌入到、或元素中。

(5) 运行基于表单验证的Web页面

只有admin角色和授权的注册用户输入正确的密码时才可以成功登录。

上一篇:全新引擎全新体验 IE9预览版抢先试用 下一篇:度病毒疫情报告:病毒“以胖为美”