博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

HTTP认证机制

Posted on 2017-10-16 18:10  开飞机的贝塔  阅读(596)  评论(0编辑  收藏  举报

HTTP的询问/应答机制

如下图:

一个实例的图:

1.客户端请求资源

2.服务器对用户进行询问,在WWW-Authenticate首部中指明在哪里,如何进行认证

3.客户端会在Authentication首部附上用户名,密码及其他信息

4.认证完成,服务器发送200响应码;可能还会有Authentication-Info首部一起返回。

realm:这个参数是安全域。受保护的资源往往会以安全域的形式存在,一个服务器往往有多个安全域。通过该参数,用户可以清楚自己所访问的是哪个域中的资源。

基本认证

Basic是最为普遍的认证机制。

用户进行资源请求之后,服务器会返回一个401状态码和WWW-Authente首部,首部中指明了安全域;

然后用户发送包含Authentication首部的报文,其中包含该域的用户名和密码。

拓展:用户名和密码会被浏览器用“:”间隔起来并用base64进行编码,之后再放到Authentication首部中发送到server。

使用代理服务器进行认证

python实现base64

>>> b = b64encode(a)
>>> b
b'bGVvOjk5OQ=='
>>> from base64 import b64decode
>>> b64decode(b)
b'leo:999' 

 基本认证的优点是简单但是缺点也是简单,他并不安全,因此在需要认证时,会采用将SSL+基本认证或者摘要认证的方式。

摘要认证

安全的HTTP

目前流行的HTTP安全机制为基本认证+SSL/TLS组合的解决方案。

SSL:安全套接字层

TLS:传输层安全,是SSL的升级版

数字加密

密码:对文本进行编码,使偷窥者无法识别的算法

秘钥:改变密码行为的数字化参数

对称秘钥加密:编码/解码使用相同的秘钥算法

非对称秘钥加密:编码/解码使用不同的秘钥算法

公开秘钥加密:一种能使百万计算机便捷的发送机密报文的系统

数字签名:用来验证报文未被修改或者伪造的校验和

数字证书:由一个可信的组织验证和签发的识别信息

明文:原始的报文(plaintext/cleartext)

密文:加密的报文(ciphertext)

密码机需要正确的密码参数才能算出正确的报文。这里,密码参数就是秘钥。

公共秘钥加密系统最为著名要数RSA了,由MIT发明的一套系统。

公共秘钥加密系统性能没有对称秘钥加密系统来的快,所以有了混合加密系统

先通过公共秘钥加密系统建立安全的通道,之后再采用对称加密系统来传输数据。