跳到主要内容

06--实现HTTP摘要认证

前言

在前面的2个章节中,一一哥 带大家认识了Spring Security中的第基本认证与表单认证 2种认证方式,其中表单认证是Spring Security默认的认证方式,也是开发时最常用的认证方式。有的小伙伴会问,不是还有第3种认证方式吗?对的,还有第三种摘要认证方式!在本文中,我们来学习了解一下HTTP摘要认证。

但是对于摘要认证,我们仅做了解即可,因为这种认证方式仅比基本认证稍微安全一点,开发时用的也不是很多。抱着艺多不压身的心态,我们多了解一点反正也没坏处。

一. HTTP摘要认证

1. 认证方式

小伙伴们,大家先跟我回顾一下Spring Security中的认证方式,有如下3种:

  • ①. HTTP基本认证;
  • ②. Form表单认证;
  • ③. HTTP摘要认证;

2. HTTP摘要认证

那么这个摘要认证是怎么回事呢?我们先来看看它的概念。

HTTP摘要认证和HTTP基本认证一样,也是在RFC2616中定义的一种认证方式,它的出现是为了弥补HTTP基本认证存在的安全隐患,但该认证方式也并不是很安全。HTTP摘要认证会使用对通信双方来说都可知的口令进行校验,且最终以密文的形式来传输数据,所以相对于基本认证来说,稍微安全了一些

原来这就是摘要认证啊,懂了?要是还没懂,我们继续往下看摘要认证的认证模型吧。

3. HTTP摘要认证模型

**HTTP摘要认证与基本认证类似,基于简单的“挑战-回应”模型。**当我们发起一个未经认证的请求时,服务器会返回一个401回应,并给客户端返回与验证相关的参数,期待客户端依据这些参数继续做出回应,从而完成整个验证过程。

这时候你可能会问,服务端会给客户端返回哪些与验证相关的参数呢?挺多的,你往下看!

4. HTTP摘要认证核心参数

服务端给客户端返回的验证相关参数如下:

> - username: 用户名。 > - password: 用户密码。 > - realm: 认证域,由服务器返回。 > - opaque: 透传字符串,客户端应原样返回。 > - method: 请求的方法。 > - nonce: 由服务器生成的随机字符串,包含过期时间(默认过期时间300s)和密钥。