• 基本认证与摘要认证


    本文总结自: https://www.cnblogs.com/huey/p/5490759.html

    浏览器与服务端之间可以通过cookie进行身份验证,那么,桌面应用程序与服务端呢?

    BASIC认证(基本认证)

    当客户端向服务端进行数据请求时,如果客户端尚未被认证,则http服务器将使用基本认证对客户端的用户名密码进行认证,以确认用户是否合法,一般方法为 将 用户名:密码 用base64加密后放入请求头中的Authorization,再发送给服务器,此方式为基本认证。

    基本认证也能用于浏览器端,但相对较少。

    基本认证过程:

    1.http请求头中添加Authorization: Basic + base64加密字段

    2.验证通过,返回内容;验证不通过,返回头中的WWW-Authenticate中会有相关说明

    备注: 基本认证使用base64编码,安全性低容易解码,因此一般使用HTTPS传输,相对安全性会高一些。

    Digest认证(摘要认证)

    http1.1中提出的用以替代基本认证的方案

    1.密码不再明文传递,而是用摘要来代替,一般使用MD5加密(基本不可逆,除非太简单)生成,服务端只存储摘要与客户端发来的摘要对比。

    2.防止重放攻击,服务端向客户端发送随机数nonce,客户端生成摘要时得把nonce放在密码上,服务端知道用户的原始密码及nonce,接收到请求后再临时生成摘要与之对比

    3. 通过客户端产生随机数cnonce的方式,支持客户端对服务器的认证。

    4.通过对内容也加入摘要计算的方式,可有选择的防止对报文内容的篡改。

    摘要认证过程:

    1.服务端接受客户端请求,生成随机数nonce,放在响应头WWW-Authenticate,状态码为401 Unauthorized

    2.客户端发现是401,弹出让用户输入用户名密码的认证窗口,用户输入后生成摘要,放入请求头中的Authorization,

    如果此时客户端也要对服务端进行认证,可生成并发送客户端随机数cnonce

    3.服务端基于用户原始密码及nonce重新生成摘要与客户端发来的摘要对比,如果客户端反过来用客户端随机数对服务器进行质询,就会创建客户端摘要。

    服务器可以预先将下一个随机数计算出来,提前将其传递给客户端,这样下一次客户端就可以预先发送正确的摘要了。

  • 相关阅读:
    (转)获取/设置IFRAME内对象元素的几种JS方法
    XML校验之sun.tools.internal.xjc.Driver
    iframe自适应高度 (转)
    iframe根据内容自动增长 zz (转载)
    java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFSheet.getMergedRegion
    jQuery取得select选中的值
    Mysql 语句大全
    Mysql 基础语句
    System.getProperty()方法大全
    一个对象什么时候才能被回收?
  • 原文地址:https://www.cnblogs.com/yanze/p/9177002.html
Copyright © 2020-2023  润新知