HTTP的认证方式

什么是认证?
    可以这样理解,服务器为了弄清楚究竟是谁在访问服务器,就得让对方的客户端自报家门,这个判断客户端身份的过程就是认证。

HTTP/1.1 使用的认证方式主要有哪些?
1、BASIC 认证(基本认证)
2、DIGEST 认证(摘要认证)
3、SSL 客户端认证
4、FormBase 认证(基于表单认证)

1、BASIC 认证(基本认证)
    BASIC认证采用Base64编码方式对用户名和密码进行处理,但这不是加密,因为明文解码后就是用户 ID和密码。因此安全风险较高。

2、DIGEST 认证(摘要认证)
    DIGEST 认证同样使用质询/响应的方式,但不会像 BASIC 认证那样直接发送明文密码。
质询响应方式:一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证。
因为发送给对方的只是响应摘要及由质询码产生的计算结果,所以比BASIC起认证,密码泄露的可能性降低。
缺点:DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。

3、SSL 客户端认证
    BASIC 以及DIGEST认证是对用户名和密码的认证,但是如果用户名密码被盗,就会被第三者冒充。而SSL 客户端认证可以解决该问题。
    SSL 客户端认证采用双因素认证:一是客户端证书验证、二是表单验证。换言之,客户端证书用来认证客户端计算机,而表单则用来确定这是用户本人的行为。
缺点:客户端证书需要一定费用。

4、FormBase 认证(基于表单认证)
    基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的应用程序发送登录信息(已事先登录的用户 ID(一般是任意字符串或邮件地址)和密码等),服务器会按登录信息的验证结果认证。

因此,上述四种方式,前两种安全等级较低,第三种需要费用,因此第四种基于表单的认证方式目前使用较为普遍。


那么问题来了,基于表单的认证方式是如何运作的?
    从上述对于表单认证的描述中可以看到,服务端需要将客户端发送过来的用户 ID 和密码与之前登录过的信息做匹配来进行认证。但是HTTP是无状态协议,无法记录已登录过用户的状态,因此需要使用Cookie 来管理 Session(会话)。具体步骤如下:

在这里插入图片描述

步骤 1:客户端以 POST 方法把把用户 ID 和密码等登录信息发送给服务器(HTTPS的方式)。

步骤 2:服务器向用户发放用以识别其身份 Session ID。通过客户端发送过来的登录信息进行身份认证,然后把用户的认证状态与Session ID 记录在服务器端。

步骤 3:客户端收到服务器发来的 Session ID,会把它作为Cookie 保存在本地。下次请求服务器时,浏览器会自动带着Cookie。服务器就可以通过验证收到Cookie中的Session ID 识别用户。



OK,这样大家都明白了吧!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值