web认证机制

什么是Web认证

简而言之,web认证就是一个确认对方身份的过程。Web认证最典型的方式是通过用户名和密码。


Web认证有多种方式

A. Http协议内建的认证方法

         1. Http Basic Authentication (Http基本认证)

             HTTP基本认证是最简单也是曾经使用过很长时间的一种认证方式。基本认证要求为每一个保护域(realm)提供一个用户名和密码进行认证。
            流程简介:

                 a. 客户端浏览器访问一个受http基本认证保护的资源。

                 b. 服务器返回401(authentication required)状态,要求客户端提供用户名和密码进行认证。Response Header里面有一个属性WWW-Authenticate,它的值比如: Basic realm="Restlet tutorial"。

                 c. 客户端弹出一个窗口,用于输入用户名和密码(基本上所有的浏览器都提供对基本认证的支持,它们都内建了一个用户名密码输入窗口)。

                 d. 输入用户名密码并确认之后,客户端把%username%:%password%用Base64进行编码后通过Request Header: Authorization传送给服务器,所以可以看到Http基本认证是明文传输,安全风险很大。比如Authorization: Basic xxxxxxxxxx.

                 e. 如果认证成功,则返回相应的资源。如果认证失败,则跳回b,重新进行认证。

           特点:

                 *. Http是无状态的,即使来自同一个客户端,对同一个realm内资源的每一个访问还是会被要求进行认证。

                 *. 客户端会缓存用户名和密码,并和认证域(authentication realm)一起保存。所以,如果对同一个域(realm)的其它资源进行访问,不需要你重新输入用户名和密码。

                 *. 登录信息会和认证域以及服务器名一起存储,所以可以很好地和其他登录信息区分开来。

                 *. 基本认证方式是不安全的,因为用户名密码以及内容都是以非加密的方式传输。

          2. Digest Authentication (摘要式身份认证)

             摘要式认证是一种基于challenge-response的认证模式。

            流程简介:

                  a. 客户端发起一个请求(没有认证信息)。

                  b. Web服务器返回一个带有WWW-Authenticate头的response(401),请求提供认证。

                  c. 客户端返回用户名和密码的摘要信息(比如说MD5加密),而不是明文。

                  d. 通过认证,则返回相应的内容。否则,继续b。

            特点:

                  *. 摘要认证主要是为了解决基本认证中最大的漏洞,即用明文传输用户名和密码的问题。

                  *. 挑战模式:每次返回401响应的时候,都会返回一个nonce(number used only once)。或者,为了安全起见,还可能会使用一次性nounce(每个request都得到一个不同的nounce)等其它方法来加强安全性。

                 *. Checksum(默认是MD5 checksum)是username, password, nonce值, HTTP方法, 和被请求的URI的checksum。

                 *. 安全隐患:虽然密码并非明文传输,但黑客还是可以利用digest值来访问网站。并且,它对内容并不加密。

 B. Form-based

基于Form的认证方式是高度可定制,也应该是目前用地最多的一种认证方式。

           流程简介:

                1. 客户端通过一个form,把用户名和密码post给服务端。

                2. 服务端通过一些逻辑来判断认证是否有效。

                3. 如果认证成功,服务器返回一个cookie(一个能唯一确认客户端的cookie,比如sessionId),用于客户端接下来的访问。如果认证失败,会提示用户进行重新输入用户名密码再次认证。

           特点:

                *. 高度可定制:可以根据自己的需要来实现认证逻辑。

                *. 服务器端要有一个保存客户端信息的地方,比如session。

                *. 客户端要有一个cookie来表明自己的身份,一般是username和一个cookie值(比如sessionId)的组合。

                *. 客户端cookie的生命周期和安全性息息相关。比如现在很多站点都支持“remember me”,其实就是在服务器端remember session并在客户端remember cookie。有些站点为了更好的安全性,用这种方式登录时,如果要执行一些重要的操作比如改密码,会要求客户用用户名和密码的方式重新登录。

C. 证书认证

证书认证方式比之其他方式是最安全的认证方式。

.............


D. 微软提供的认证方式



Form身份验证:这个用的很多
windows身份验证:基于windows操作系统的用户或者域用户的身份验证
基本身份验证:其实也是基于windows操作系统的账户验证的。
匿名身份验证:谁都可以访问,其内部也是通过指定一个特定的windows系统的user账户来访问的。
摘要身份验证:使用 Windows 域控制器对请求访问 Web 服务器内容的用户进行身份验证。


转载地址

http://blog.csdn.net/jaylong35/article/details/5858094



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值