zoukankan      html  css  js  c++  java
  • 基本认证与摘要认证

    本文总结自: 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重新生成摘要与客户端发来的摘要对比,如果客户端反过来用客户端随机数对服务器进行质询,就会创建客户端摘要。

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

  • 相关阅读:
    django 项目需要注意的一些点
    VUE之路
    Oracle 表格碎片的查看方法
    RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法
    RMAN 修复主库 nologging 操作导致物理备库的坏块
    Oracle 数据库19c 回退降级到 11.2.0.4 方案
    如何评估oracle 数据库rman全备和增量备份大小
    在将Oracle GI和DB升级到19c或降级到以前的版本之前需要应用的补丁 (Doc ID 2668071.1)
    Oracle 数据库坏块处理
    opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
  • 原文地址:https://www.cnblogs.com/yanze/p/9177002.html
Copyright © 2011-2022 走看看