Spring Security学习笔记-常见验证模式

常见验证模式

  1. Basic
      一种基于challenge-response的认证模式,针对特定的资源,需要提供用户名和密码认证后,才可访问,其中密码是需要明文传输的。一个请求到来时,浏览器先弹出对话框,让用户输入用户名和密码并用base64进行编码,实际是,以“用户名:密码”的形式进行base64编码,浏览器会在http的报文头部,加入base64编码的内容,服务器解析出来这些信息并认证通过才可继续访问。使用这种认证方式有两个明显的缺点,第一个它是无状态的导致每次通信都要带上认证信息,即使是已经认证过的资源;第二它的传输安全性不足,认证信息用base64编码,基本上就是明文编码,很容易被截取并盗用认证信息。
  2. Digest
       主要是为了解决Basic模式的安全问题,用于替代原来的basic认证模式。Digest也是采用了challenge-response的认证模式,当访问特定的资源时,浏览器还是弹出对话框,让用户输入用户名和密码,浏览器会对用户名,密码,http请求方法,被请求资源uri等组合后进行MD5运算,之后把运算得到的摘要信息发送给服务器。服务器web容器,获取到http报文头部相关认证信息后,从中获取到username,根据username获取对应的密码,同样对用户名,密码,http请求方法,被请求资源uri等组合进行MD5运算,计算的结果和response进行比较,如果相同才算认证通过。通过哈希算法对通信双方身份的认证十分常见,它的好处就是不必把包含密码的信息对外传输,只需要将这些密码信息加入一个对方给定的随机值,然后来计算出哈希值,最后将哈希值传给对方,对方就可以认证你的身份。Digest模式避免了密码在网络上的明文传输,提高了安全性,但它仍然存在缺点,比如认证的报文被攻击者拦截到,攻击者也可以获取到资源。
  3. X.509
       X.509是一种非常通用的证书格式,所有的X.509证书包含一下数据:版本号,证书持有人的公钥,证书的序列号。其中,证书的序列号是由CA(证书颁发机构)给予的每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将指定证书的序列号放入由CA签发的证书的黑名单列表中,这也是序列号唯一的原因。除此之外,x.509证书还包含主题信息,证书的有效期,认证机构,发布人的数字签名,签名的算法等等。x.509格式的证书目前已经被微软网景和其他许多公司广泛的应用于对电子邮件信息进行签名,对程序代码进行认证,以及对许多其它类型的数据进行认证等等。
  4. LDAP
       LDAP(Ligntweight Directory Access Protocol)是轻量级的目录访问协议。企业内部需要认证的服务有很多,员工需要记住很多的密码,即使对这些服务进行相同的密码设置,也存在着很大的安全隐患。许多企业都会遇到这种情况,每一个新员工到来的时候管理员都要初始化很多密码,而这些密码都被设置成了类似123456这种的弱密码。由于各种软件的认证机制之间没有使用一个统一的标准,管理员无法一次性的修改所有服务的密码,这导致很多即使是入职很久的员工,都还在使用这种众所周知的密码。另外一个比较严重的问题,出现在公司增加内部服务的时候,管理员需要重新为所有的员工初始化新的账户信息,对于一个有上千名员工的企业来说这将是一个灾难,如果可以为各种软件提供一个标准的认证机制,所有软件就可以不再使用独有的用户管理方法,而是通过这种统一的认证机制进行用户认证,这样就解决了很多企业遇到的问题。统一身份认证主要是改变原有的认证策略,使需要认证的软件都通多LDAP进行认证,用户的所有信息都存储在LDAPServer中,终端用户在需要使用公司内部服务的时候,都需要通过LDAP服务器的认证,每个员工只需要记住一个密码,在需要修改用户信息的时候,可以通过管理员提供的web界面,直接修改自己在LDAPServer中的信息即可。目前,市面上的大型公司的内部系统基本在使用LDAP认证。

猜你喜欢

转载自blog.csdn.net/qq_41620800/article/details/84795031