https://yq.aliyun.com/articles/259081

https://blog.csdn.net/bytxl/article/details/50379592

HTTP请求报头: Authorization

HTTP响应报头: WWW-Authenticate

HTTP认证 

基于

质询  /回应( 

challenge/response)的认证模式。

◆ 基本认证 basic authentication   ← HTTP1.0提出的认证方法

客户端对于每一个realm,通过提供用户名和密码来进行认证的方式。

※ 包含密码的明文传递

基本认证步骤:

1. 客户端访问一个受http基本认证保护的资源。

2. 服务器返回401状态,要求客户端提供用户名和密码进行认证。

401 Unauthorized

WWW-Authenticate: Basic realm="WallyWorld"

3. 客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。

Authorization: Basic xxxxxxxxxx.

4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

特记事项

1. Http是无状态的,同一个客户端对同一个realm内资源的每一个访问会被要求进行认证。

2. 客户端通常会缓存用户名和密码,并和authentication realm一起保存,所以,一般不需要你重新输入用户名和密码。

3. 以非加密的明文方式传输,虽然转换成了不易被人直接识别的字符串,但是无法防止用户名密码被恶意盗用。

◆ 摘要认证 digest authentication   ← HTTP1.1提出的基本认证的替代方法

服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。

※ 不包含密码的明文传递

摘要认证步骤:

1. 客户端访问一个受http摘要认证保护的资源。

2. 服务器返回401状态以及nonce等信息,要求客户端进行认证。

HTTP/1.1 401 Unauthorized

WWW-Authenticate:Digest

realm="testrealm@host.com",

qop="auth,auth-int",

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",

opaque="5ccc069c403ebaf9f0171e9517f40e41"

3. 客户端将以用户名,密码,nonce值,HTTP方法, 和被请求的URI为校验值基础而加密(默认为MD5算法)的摘要信息返回给服务器。

认证必须的五个情报:

     ・ realm : 响应中包含信息

     ・ nonce : 响应中包含信息

     ・ username : 用户名

     ・ digest-uri : 请求的URI

     ・ response : 以上面四个信息加上密码信息,使用MD5算法得出的字符串。

Authorization:Digest

username="Mufasa", ← 客户端已知信息

realm="testrealm@host.com",   ← 服务器端质询响应信息

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",  ← 服务器端质询响应信息

uri="/dir/index.html", ← 客户端已知信息

qop=auth,   ← 服务器端质询响应信息

nc=00000001, ← 客户端计算出的信息

cnonce="0a4f113b", ← 客户端计算出的客户端nonce

response="6629fae49393a05397450978507c4ef1", ← 最终的摘要信息 ha3

opaque="5ccc069c403ebaf9f0171e9517f40e41"  ← 服务器端质询响应信息

4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

特记事项:

1. 避免将密码作为明文在网络上传递,相对提高了HTTP认证的安全性。

2. 当用户为某个realm首次设置密码时,服务器保存的是以用户名,realm,密码为基础计算出的哈希值(ha1),而非密码本身。

3. 如果qop=auth-int,在计算ha2时,除了包括HTTP方法,URI路径外,还包括请求实体主体,从而防止PUT和POST请求表示被人篡改。

4. 但是因为nonce本身可以被用来进行摘要认证,所以也无法确保认证后传递过来的数据的安全性。

   ※ nonce:随机字符串,每次返回401响应的时候都会返回一个不同的nonce。

   ※ nounce:随机字符串,每个请求都得到一个不同的nounce。

※ MD5(Message Digest algorithm 5,信息摘要算法)

① 用户名:realm:密码 ⇒ ha1

② HTTP方法:URI ⇒ ha2

③ ha1:nonce:nc:cnonce:qop:ha2 ⇒ ha3

◆ WSSE(WS-Security)认证  ← 扩展HTTP认证

WSSE UsernameToken

服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。

※ 不包含密码的明文传递

WSSE认证步骤:

1. 客户端访问一个受WSSE认证保护的资源。

2. 服务器返回401状态,要求客户端进行认证。

HTTP/1.1 401 Unauthorized

WWW-Authenticate:WSSE

realm="testrealm@host.com",

profile="UsernameToken" ← 服务器期望你用UsernameToken规则生成回应

※ UsernameToken规则:客户端生成一个nonce,然后根据该nonce,密码和当前日时来算出哈希值。

3. 客户端将生成一个nonce值,并以该nonce值,密码,当前日时为基础,算出哈希值返回给服务器。

Authorization:WSSE profile="UsernameToken"

X-WSSE:UsernameToken

username="Mufasa",

PasswordDigest="Z2Y......",

Nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",

Created="2010-01-01T09:00:00Z"

4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

http://blog.csdn.net/b_dogs881221/article/details/7753847

【转】HTTP认证机制相关推荐

  1. jwt认证机制优势和原理_最详细的Spring Boot 使用JWT实现单点登录

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(S ...

  2. SSO 认证机制对比

    2019独角兽企业重金招聘Python工程师标准>>> SSO 认证机制对比 博客分类: 架构 几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单 ...

  3. 常用的认证机制之session认证和token认证

    一.session认证 1.session认证的过程: 前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否 ...

  4. 基于JWT的Token认证机制实现

    一.基于JWT的Token认证机制实现 1.什么是JWT JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 2.JWT组成 ...

  5. 深入详解windows安全认证机制ntlmKerberos

    0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基 ...

  6. (golang)HTTP基本认证机制及使用gocolly登录爬取

    内网有个网页用了HTTP基本认证机制,想用gocolly爬取,不知道怎么登录,只好研究HTTP基本认证机制 参考这里:https://www.jb51.net/article/89070.htm 下面 ...

  7. elasticsearch httpclient认证机制

    转载自http://www.cnblogs.com/youran-he/p/7562870.html 最近公司单位搬迁,所有的服务都停止了,我负责的elasticsearch不知道怎么回事,一直不能运 ...

  8. web安全认证机制知多少

    如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制 ...

  9. jwt重放攻击_【干货分享】基于JWT的Token认证机制及安全问题

    一步一步教你基于JWT的Token认证机制实现,以及如何防范XSS攻击.Replay攻击和中间人攻击. 文章目录 一.几种常用的认证机制 1.1 HTTP Basic Auth HTTP Basic ...

  10. linux远程登录 密钥,使用密钥认证机制远程登录Linux

    密钥认证机制 创建存放key的文件 1)创建目录 /root/.ssh 并设置权限 [root@localhost ~]# mkdir /root/.ssh mkdir 命令用来创建目录,以后会详细介 ...

最新文章

  1. android waiting for debugger
  2. [BZOJ4320][ShangHai2006]Homework(根号分治+并查集)
  3. LeetCode 1629. 按键持续时间最长的键
  4. dom4j工具类_基于DOM4J的XML文件解析类
  5. spring 源码深度解析_spring源码解析之SpringIOC源码解析(下)
  6. Hash算法大全(java实现)
  7. 区块链百科合集之 账 户 体 系
  8. SpringBoot06-Dubbo和Zookper集成
  9. Excel 2010 SQL应用052 将英文字母转换为小写字母
  10. PDF如何免费转Word
  11. 微信的用户已退出是什么意思_微信版本更新,朋友圈能评论表情包了?安卓用户已退出群聊...
  12. 百度的文心一言 ChatGTP 的对比
  13. Jquery获取选中复选框的值(checkBox)
  14. css3中的属性选择器有哪些,CSS3中属性选择器使用方法详解
  15. java 跨域上传,Java如何利用Ajax完成跨域上传图片的功能介绍
  16. Web服务统一身份认证协议设计与实现
  17. 宝塔邮局邮箱设置成功后能发送不能接收问题处理
  18. 会oracle能找什么岗位的工作,oracle岗位职责
  19. 5. springboot-----项目实战-帐单管理系统(Thymeleaf)
  20. Jama Contour 轻量型企业需求管理工具

热门文章

  1. 文本三剑客之——sed编辑器
  2. dell r720服务器安装esxi
  3. 前端BFF中间件是什么?
  4. matlab多元回归程序,多元回归程序MATLAB程序.doc
  5. JavaSE-第10章【基础API与常见算法】
  6. 《量化金融R语言初级教程》一2.4 切线组合和资本市场线
  7. 你幸福的背后,是我孤独的背影
  8. 【深度长文】小样本学习及其在美团场景中的应用
  9. ChinaRen社区暴强回复
  10. 4K闭循环低温制冷系统常用制冷机规格和参数