WEB应用中的基本身份验证和表单身份验证

转载 2004年08月28日 13:36:00
 

WEB应用中的基本身份验证和表单身份验证

Translated by Caiyi0903(Willpower),2004.4.23 

在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多方式来实现。在本文里,我们不会把所有的验证方法都考虑到,我们的目的是让你学会如何以最简单最方便的验证方法来完成。下面将讨论基本的(BASIC)和基于表单的(FORM-BASED)验证方式。我们考虑使用TOMCAT作为WEB SERVER,它通过server.xmlweb.xml文件提供基本的和基于表单的验证。JSP页面中的j_security_check 表单(for FORM-based) 需要两个参数:j_usernamej_password。它们指定了在SQL数据库中的登陆角色。你能够看到,它的弹性化,可用性和必要性。

第一步,我们要下载TOMCAT和MYSQL,前者用来做WEB SERVER,后者用来做SQL SERVER。还要下载JDBCRealm工具,它在TOMCAT中使用,用来做MYSQL连接器,连接MYSQL数据库的。

我们假设你已经安装了TOMCAT和MYSQL,那么我们开始从SERVER的配置入手了。当然,你还需要安装JAVA的MYSQL连接驱动,我强烈建议只使用稳定的驱动版本,因为在有些情况下,alpha/beta版本的驱动不能正常工作。

下面我们来操作SQL数据库。老实说,MYSQL和TOMCAT是相当好的工具,它们都是跨平台的,不管你的操作系统是WINDOWS还是类似UNIX/LINUX的,它们都能正常运行。因此,不论运行环境,它们的配置过程都是绝对一样的。

MySQL

在命令行中执行mysql 客户端命令,然后输入:


这个将为你创建一个weblogin数据库,它将保存用户名和密码以及角色等一切信息。你对数据库所做的任何改变都会直接立即反映出来。比如说添加用户,改变用户密码和角色等。


我们创建一个users表用来保存用户的LOGIN和PASSWORD:


如你看到的,我们要在group表里保存login属于哪个group的信息。下面,我们要插于一些数据用来测试使用,并完成MYSQL的配置工作:

insert into users  ('green', 'testpwd');
insert into groups ('green', 'testgroup');

现在,我们创建了一个用户叫green,他的密码是testpwd,他属于testgroup这个用户组。接着,轮到TOMCAT的配置了。

Tomcat

TOMCAT本身并没有能力操作数据库来实现身份验证。但是可以依靠JDBCRealm。下面我们来使用它。

下面我们从TOMCAT的/conf/server.xml文件来开始我们的配置。打开这个文件并找到下面的内容:


删除这一行,或者用<!-- ... --> 注释掉它,我们要使用JDBCRealm。所以输入下面的内容:


下面我们对field参数做详细讲解:

  • debug—这是我们设置的debug参数,数字越高显示信息越详细。
  • driverName—这个是MYSQL驱动的名字。要确保这个驱动的JAR包在TOMCAT的CLASSPATH中能够找到它。
  • connectionURL—这个是用来建立JDBC连接的数据库URL。在这个field里,weblogin是我们数据库的名字。userpassword 是我们登陆数据库的用户数据。
  • userTable—一个定义有userNameColuserCredCol字段的表。
  • userNameColuserCredColusers表里定义的login和pass

现在,我们完成了配置过程。下面,我们要配置WEB应用程序来被这样一个身份验证方式保护起来。我们要举两个例子。最简单的是基本身份验证方式,然后就是基于表单的身份验证。在第一种情况里,我们尝试访问受保护的数据,将会有一个POP-UP窗口弹出提示你输入你的login和password。在第二种情况里,我们会通过页面的方式来让你通过身份验证。这个页面的内容可以是任意的,这个取决于你要使用怎么样的验证方式了。

基本身份验证方式(BASIC authorization method)

我们假设应用程序在TOMCAT的/webapps/webdemo, 我们要保护所有在admin 子目录里的文件。我们必须打开它的/webapps/webdemo/WEB-INF/web.xml文件,输入下列内容:


让我们来看看刚才输入的内容。我们为应用程序创建了一个web-resource-name并映射到login-config 。我们还定义了url-pattern, 它指明你受保护程序的路径。在login-conf中,我们定义了一个BASIC auth-method

很简单,对吗?不要忘记了,在使改变生效前要停止并重启TOMCAT。

表单身份验证方式(FORM-based authorization method)

对于这种方式,我们仅仅只需要:

  • 修改/webapps/webdemo/WEB-INF/web.xml
  • 创建一个登陆用的JSP页面, 用户将在这里的HTML表单中输入他的登陆ID和密码
  • 创建一个JSP error页面,一旦验证失败,用户将跳到该页面

如果你先尝试使用BASIC验证方式,你只需要改变login-config 为下面那一段代码。否则,你需要输入security-constraint代码段。使用下面的login-config:


我们设置表单的auth-method并定义了form-login-config。这个将使得TOMCAT使用 /admin/login.jsp页面来让用户登陆,使用/admin/error.jsp页面来处理登陆失败。

你可以使用任何你想要的出错信息。页面唯一需要的就是下面的HTML表单标签,你要插到页面中:


布局,风格,或其他所有你喜欢的。这个error页面能够做成任何你想要的。无非就是通知用户,验证失败了。

OK,全部完成了。你需要停止和重启一遍TOMCAT使得改变生效。

© Olexiy Prokhorenko, http://www.7dots.com/resume/
Co-author: Alexander Prohorenko

Javascript验证表单身份证号码的合法性

文章出处: http://dengo.org/archives/941 不少大的游戏注册时都要输入身份证号码,来限制未成年人,配合所谓的反沉迷系统,账号注册环节注重的是快捷,所以身份证验证都不是...
  • thinkscape
  • thinkscape
  • 2013年12月30日 16:50
  • 6765

Web项目身份验证设置为Windows时如何将项目部署到IIS进行调试

因为项目有多个解决方案组成,彼此之间存在主子站点问题,如果想要同时调试多个项目,就不能简单的用VS的IISExpress进行调试,需要将项目配置成IIS本地(这里是IIS)进行调试,配置过程一切顺利,...
  • starfd
  • starfd
  • 2015年05月27日 21:14
  • 5529

easyui 自定义表单内容验证(汉字、字母、数字、邮箱、电话、邮编、身份证号等)

jquery easyui validator 校验表单输入内容的格式
  • u011231355
  • u011231355
  • 2015年10月10日 11:21
  • 1507

一个简单的会员身份验证的WEB应用程序

  • 2008年10月21日 13:16
  • 14KB
  • 下载

登录工程三:现代Web应用中的身份验证实践

登录系统     首先,我们要为“登录”做一个简要的定义,令后续的讲述更准确。之前的两篇文章有意无意地混淆了“登录”与“身份验证”的说法,因为在本篇之前,不少“传统Web应用”都将对身份的识别看作整...
  • jun55xiu
  • jun55xiu
  • 2017年05月05日 16:12
  • 530

java web之基于表单的身份验证

1.web应用程序安全主要注意什么 ①阻止未授权的用户访问敏感的数据 指定哪些用户才能访问哪些指定资源、用户的身份验证。身份验证简单方式采用post方式提交表单,用户名和密码。身份验证复杂方式采用X....
  • ya_1249463314
  • ya_1249463314
  • 2017年07月07日 17:14
  • 314

实例ASP.NET基于表单的角色身份验证

  • 2017年04月22日 20:24
  • 6.79MB
  • 下载

ASP.NET MVC 4 (十三) 基于表单的身份验证

http://www.cnblogs.com/duanshuiliu/p/3715703.html 在前面的章节中我们知道可以在MVC应用程序中使用[Authorize]特性来限制用户对某些...
  • mituan1234567
  • mituan1234567
  • 2015年06月16日 11:40
  • 429

Exchange Server 2010 OWA基于表单身份验证剖析

登录提示类型: •完整的域:以“域名\用户名”格式表示用户的域名和用户名。例如 Contoso\Denny_Duan。 •主体名称:UPN。UPN 分为两个部分:UPN 前缀(用户帐户名)和 UP...
  • Denny_Duan77
  • Denny_Duan77
  • 2012年09月24日 21:19
  • 1702

【JSP/SERVLET】Tomcat内置表单身份验证

一、概述     前面是扯犊子的,JSP/SERVLET基于HTTP规范,提供了几种安全支持,BASIC、DIGEST、FORM、CLIENT-CERT,本文主要介绍一下FORM的安全支持开发,文末有...
  • reliveIT
  • reliveIT
  • 2015年06月16日 12:19
  • 1828
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB应用中的基本身份验证和表单身份验证
举报原因:
原因补充:

(最多只允许输入30个字)