首页 > 范文大全 > 正文

Web应用中的用户验证方法

开篇:润墨网以专业的文秘视角,为您筛选了一篇Web应用中的用户验证方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:用户验证是web应用中的一个必需功能,通过该功能不但能够知道发出请求的用户身份是否合法,而且能够管理多个阶段的事务处理并保护用户的私人信息。Http协议中包含了一些用户验证所需要用到的功能,但在目前流行的各种Web应用中这些功能并不常用,现在一般采用应用程序级别的用户验证结合Cookies的方法来识别用户。越来越多的Web应用也逐渐快开始使用Fackbook和Google等大公司提供的用户身份管理系统来进行用户身份的验证。本文将全面论述在Web应用中经常用到的各种用户验证方法。用户验证是Web应用中的一个重要功能,常用的用户验证方法主要有4种,分别是:Http用户验证,基于应用程序的用户验证,第三方用户验证以及OAuth用户验证。主要论述了Web应用中常用的4种用户验证方法的基本工作原理。

关键词:用户验证 Http用户验证 OpenID Shibboleth OAuth

中图分类号:TP393.02 文献标识码:A 文章编号:1007-9416(2015)09-0000-00

1 Http用户验证

Http协议中提供了两种用户验证方法:基本用户验证和消息摘要式用户验证。

(1)基本用户验证。基本用户验证方式是最简单的一种方法。在这种方法中,用户名和密码使用Base64算法进行编码,并且将这些信息写入到Http请求中发送给服务器。Base64算法虽然可以将用户名和密码变得不可阅读,但是黑客只要能够监听并截获到这种加密信息,就可以轻而易举地破解出真正的用户名和密码信息,然后利用这些信息进行各种破坏活动。正是由于Base64算法的不安全性,导致基本用户验证功能只能用于安全的Https通道。

(2)消息摘要式用户验证。基本用户验证通常是一种不安全的验证方法。因此,Http协议中提供了另外一种更为安全的并可以在普通Http协议通道上传输密码信息的用户验证方法----消息摘要式用户验证。在这种验证方法中,客户端浏览器被要求使用消息摘要式用户验证并接收一个随机字符串,然后基于用户名、密码、随机字符串以及发送给服务器的请求信息,使用MD5算法生成一个单向哈希值。服务器也会基于相同的信息生成一个单向哈希值,再将该值和客户端浏览器发送过来的哈希值进行比较,如果两者是相同的,那么用户验证成功,服务器将向客户端浏览器发送正式的数据信息。与基本用户验证一样,消息摘要式用户验证没有提供用户登出的机制。

2 基于应用程序的用户验证

目前最流行的Web应用程序用户验证方法是在应用程序内部实现的。这种实现方法使用应用程序的数据库来进行用户名和密码的管理,并且由应用程序判断何时需要提示输入用户名和密码。因此,在这种方法中,应用程序必须管理好用户的所有信息,做好用户验证的相关检查和用户会话维护的工作,并且要解决好维护不同HTTP请求之间的会话状态的主要问题。与前述的Http用户验证方法不同,基于应用程序的用户验证方法是通过Cookies维护请求之间的状态,并且还提供了用户登出的处理机制。

3 第三方验证

现在已经有非常多Web应用程序开始使用第三方用户验证方法。在这种用户验证方法中,Web应用程序不再管理用户的验证信息,而是通过另外一个Web应用程序来实现对用户身份的验证。目前有两种主流的第三方验证标准。OpenID是其中一种广泛使用的标准,这种标准受到业界的大力支持。Shibboleth是另外一种主要用于学术网络或信任网络的标准。

3.1 OpenID

在OpenID标准中,用户的身份是由一个URL地址来进行标识的,Web应用程序可以通过这个地址确认用户的身份。在整个事务处理过程中主要涉及到三个对象,分别是:用户、OpenID提供者以及Web应用程序。OpenID协议标准的设计允许用户能够管理一个单一的身份信息并且当不同的Web应用程序对其进行身份验证时可以获得统一体验。Web应用程序开发者借助OpenID可以不费精力地管理用户的证书,从而可以获得大量潜在的已经拥有OpenID身份的用户群。OpenID已经在很多Web开发语言和工具包的开源开发库中成功实现。

OpenID标准也存在着一些潜在的安全问题,这些安全问题主要反映在Web应用程序和OpenID提供者之间的信息交换方式上。如果Web应用程序和OpenID提供者之间交换的信息能够被监听,那么就有可能存在其他人冒充合法用户身份从事破坏活动的危险。目前一些防范措施已经添加到了OpenID2.0规范之中。

3.2 Shibboleth

Shibboleth表面上与Openid非常相似,主要用于在信任的网络中进行操作,是一种联合的单点登录和属换框架。Shibboleth与OpenID的一个主要区别是Web应用程序可以使用Shibboleth获得关于用户的更多信息,比如用户的电子邮件地址,全名或者在单位(组织)中的身份地位等。在Shibboleth中Web应用程序被称为服务提供者,提供用户验证服务的程序称为身份验证者。一个成功的Shibboleth应用实例是AAF(Australian Access Federation),这个系统是澳大利亚国内大学和研究机构的联盟。

4 OAuth用户验证

OAuth(OpenAuthentication)是一个开放的认证协议,其可以在不让第三方接触用户名和密码等敏感信息的前提下,完成第三方对用户资源访问请求的认证授权。2010年OAuth1.0被IETF认定为互联网标准协议。目前,国内外大多数开放平台采用了OAuth2.0安全认证机制,同时提供OAuth1.0的安全认证支持。由于它的简易性、安全性和开放性,OAuth已成为开放资源授权事实上的标准。

5 结语

用户验证功能的实现好坏对于Web应用中信息的安全性至关重要。上述4种常见的用户验证方法各有利弊,开发者可以根据项目的需要选用最为合适的用户验证方法,开发出高效、安全的Web应用。

参考文献

[1]刘大红,刘明.第三方应用与开放平台OAuth认证互连技术研究[J].电脑知识与技术,2012,8(22):5367-5369.

[2]刘班.在Django下实现用户的安全注册和登录[J].电脑编程技巧与维护,2012(5):82-90.

收稿日期:2015-08-18

作者简介:刘班(1978―),男,湖北荆州人,工学硕士,主要研究方向:软件工程、分布式计算、Web计算。