美文网首页
中文使用

中文使用

作者: 盗生一 | 来源:发表于2020-10-26 18:55 被阅读0次

今天试了下HTTP认证的资料. 主要是基本认证与摘要认证.
其中基本认证是指 Base64(user:pwd)后,放在Http头的Authorization中发送给服务端来作认证.
用Base64纯只是防君子不防小人的做法。所以只适合用在一些不那么要求安全性的场合。
不过如果是做WebAPI不是网页,且web服务器是自己可以控制的,其实没必要那么死板。
我就试了把Base64(AES(user:pwd))后,按基本认证的方式传参数。然后Web服务再依次解码得
到user与pwd做认证,只要两边都约定好,是没什么问题的。

至于摘要认证就要复杂点,我把维基百科的上东西拿过来做下笔记:

  1. Client -------> WebServer
    点链接或发请求
    /
    GET /dir/index.html HTTP/1.0
    Host: localhost
  1. Client <------- WebServer
    返加401 "Unauthorized" 响应码
    认证域(realm)
    服务端密码随机数(nonce)
    ///
    HTTP/1.0 401 Unauthorized
    Server: HTTPd/0.9
    Date: Sun, 10 Apr 2005 20:26:47 GMT
    WWW-Authenticate: Digest realm="testrealm@host.com",
    qop="auth,auth-int",
    nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
    opaque="5ccc069c403ebaf9f0171e9517f40e41"
    Content-Type: text/html
    Content-Length: 311
    ///
  2. Client -------> WebServer
    返回同样的header,但多加一个认证头包括了响应代码
    //
    GET /dir/index.html HTTP/1.0
    Host: localhost
    Authorization: Digest username="Mufasa",
    realm="testrealm@host.com",
    nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
    uri="/dir/index.html",
    qop=auth,
    nc=00000001,
    cnonce="0a4f113b",
    response="6629fae49393a05397450978507c4ef1",
    opaque="5ccc069c403ebaf9f0171e9517f40e41"
  1. Client <------- WebServer
    ///
    HTTP/1.0 200 OK
    Server: HTTPd/0.9
    Date: Sun, 10 Apr 2005 20:27:03 GMT
    Content-Type: text/html
    Content-Length: 7984
    ///

客户端在后续提交请求时,
重复用服务器密码随机数(nonce)
每次产生新的客户端密码随机数(cnonce)
计数器(nc)++
然后依 保护质量(qop)类型,确定response 值

服务端收到后,依qop类型,用同样的算法,算出值与客户端带过来的response值对比。

nonce过期处理:
当服务端密码随机数nonce过期时,
返回 401,并在认证头中添加stale=TRUE

// ":"作为各个参数的分割符
HA1 : md5("username:realm:pwd")
HA2 : md5("GET:/xx/xx/index.html")

qop:为"auth"或"auth-int"
Response = md5("HA1:nonce:nc:cnonce:qop:HA2")
qop:未指定
Response = md5("HA1:nonce:HA2")

     上面两种认证方式其实都是通过Authenticate传参数,只不过定义不同罢了。要是自己写Web服务,两边约定好。

相关文章

  • 简书Markdown的使用2019-06-24

    1.代码块的使用 效果显示: 输入示例: 例如: 2.标题的使用 效果显示: 中文 中文 中文 中文 中文 中文 ...

  • 中文使用

    今天试了下HTTP认证的资料. 主要是基本认证与摘要认证.其中基本认证是指 Base64(user:pwd)后,放...

  • 写作规范指南

    1、只使用中文样式的直角引号(「」) 2、使用全角中文标点,使用半角中文拼音 3、段首顶格写,不加空格也不使用Ta...

  • IDEA相关

    一、使用System.out.println("中文") 打印中文显示问号(?) 使用 maven 项目,配置了本...

  • MySQL命令不支持中文空格

    在使用MySQL的时候一定要在不能使用中文空格,中文空格会报错,语法错误

  • Jetson Nano配置与使用(3)中文输入法ibus配置

    Jetson Nano配置与使用(3)中文输入法ibus配置 由于经常使用到中文搜索,所以安装了中文输入法,Jet...

  • Axios 中文使用

    概述 Axios是一个基于promise的HTTP库,可以用在浏览器和Node.js中。axios具有特征: 从浏...

  • URL参数问题

    尽量避免使用中文参数

  • 断路器

    Hystrix使用入门手册(中文)

  • python从csv读取数据用matplotlib绘制时间序列图

    csv文件中有中文,因此要导入pylab库,使用中文字体需要导入的库有: 设置中文字体 使用pandas的read...

网友评论

      本文标题:中文使用

      本文链接:https://www.haomeiwen.com/subject/zdkzmktx.html