HTTP-确认访问用户身份的认证

274 阅读3分钟

HTTP使用的认证方式:

  • BASIC 认证
  • DIGEST 认证
  • SSL 客户端认证
  • FormBase 认证(基于表单认证)

BASIC认证

BASIC认证从HTTP1.0就定义了认证方式,现在有一部分的网站会使用这种认证方式,因为使用上不够灵活,达不到多数网站期望的安全等级,所以并不常用。

IMG_20210527_000332.jpg

IMG_20210527_000413.jpg

DEIGEST认证

DIGEST认证从HTTP1.1开始有的,认证同样是使用质询/响应的方式。但不会直接发送明文密码。

质询响应:一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成相应码,最后将响应码返回给对方进行认证。

IMG_20210527_074529.jpg

IMG_20210527_074610.jpg

步骤:

  • 请求需要认证的资源时,服务器会随着状态码401 Authorization Required,返回带WWW-Authenticate首部字段的响应,盖子段包含质问响应方式认证所需要的临时质询码(随机数,nonce)。首部字段WWW-Authenticate必须包含realm和nonce两个字段,客户端就是依靠向服务器回送这两个值进行认证的。nonce是每次随返回401响应生成的任意随机字符串,通常推荐base64的十六进制数,实际内容以来服务器的具体实现。
  • 接收到401状态码的客户端,返回的响应中包含DIGEST认证必须的首部字段Authorization的信息。首部字段Authorization内必须包含username、realm、nonce、uri、response的字段信息。其中realm和nonce就是从服务器接收到的响应字段。username是realm限定范围内可进行认证的用户名。uri(digest-uri)是Request-URI的值。response也叫做Request-Digest,存放经过MD5计算后的密码字符串,形成响应码。
  • 接受到包含首部字段Authorization请求的服务器,确认认证信息的正确性。认证通过后返回包含Request-URI字段的响应。这时会在首部字段Authentication-info写入一些人真成功的信息。

DIGEST认证的安全等级高于BASIC,但是比HTTPS弱。它并不存在防止用户伪装的保护机制,使用上不那么便捷灵活,很少有网站使用。

SSL客户端认证

认证步骤:

  • 接收到资源认证的请求,服务器会发送Cerrtificate Request报文,要求客户端提供客户端证书。
  • 用户选择将发送的客户端证书,把证书信息以Client Certificate报文方式发送给服务器。
  • 服务器验证客户端证书通过后领取证书内客户端公开密钥,然后开始HTTPS通信。

SSL一般为双因素认证,双因素认证是值密码和认证者持有的其他认证信息。就是值客户端证书和用户的账户密码。

基于表单认证

客户端向服务器的Web应用发送登录信息,按登录信息的验证结果认证。

提供用户界面及认证方式页各不相同。

表单认证一般会使用Cookie来管理Session。

IMG_20210527_224537.jpg