HTTP Digest authentication

2023-05-16

(Digest authentication是一个简单的认证机制最初是为HTTP协议开发的因而也常叫做HTTP摘要RFC2671中描述。其身份验证机制很简单,它采用杂凑式(hash)加密方法,以避免用明文传输用户的口令。

摘要认证就是要核实,参与通信的双方,都知道双方共享的一个秘密(即口令)。

 

当服务器想要查证用户的身份,它产生一个摘要盘问(digest challenge),并发送给用户。典型的摘要盘问如下:

 

Digest realm="iptel.org", qop="auth,auth-int",

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="", algorithm=MD5

 

这里包括了一组参数,也要发送给用户。用户使用这些参数,来产生正确的摘要回答,并发送给服务器。摘要盘问中的各个参数,其意义如下:

 

realm(领域):领域参数是强制的,在所有的盘问中都必须有。它是目的是鉴别SIP消息中的机密。在SIP实际应用中,它通常设置为SIP代理服务器所负责的域名。

 

在要求用户输入用户名和口令时,SIP用户代理则会显示这个参数的内容给用户,以便用户使用正确的用户名和口令(这个服务器的)。

 

nonce(现时):这是由服务器规定的数据字符串,在服务器每次产生一个摘要盘问时,这个参数都是不一样的(与前面所产生的不会雷同)。现时通常是由一些数据通过md5杂凑运算构造的。

这样的数据通常包括时间标识和服务器的机密短语。这确保每个现时都有一个有限的生命期(也就是过了一些时间后会失效,并且以后再也不会使用),而且是独一无二的

(即任何其它的服务器都不能产生一个相同的现时)。

 

客户端使用这个现时来产生摘要响应(digest response),这样服务器也会在一个摘要响应中收到现时的内容。服务器先要检查了现时的有效性后,才会检查摘要响应的其它部分。

 

因而,现时在本质上是一种标识符,确保收到的摘要机密,是从某个特定的摘要盘问产生的。还限制了摘要盘问的生命期,防止未来的重播攻击。

opaque(不透明体):这是一个不透明的(不让外人知道其意义)数据字符串,在盘问中发送给用户。

在摘要响应中,用户会将这个数据字符串发送回给服务器。这使得服务器可以是无状态的。如果需要在盘问和响应之间维护一些状态,可以用这个参数传送状态给客户端,此后当摘要响应回来时,再读这个状态。

 

algorithm(算法):这是用来计算杂凑的算法。当前只支持MD5算法。

 

qop(保护的质量)。这个参数规定服务器支持哪种保护方案。客户端可以从列表中选择一个。值

 auth表示只进行身份查验, auth-int表示进行查验外,还有一些完整性保护。需要看更详细的描述,请参阅RFC2617。

 

在收到了摘要盘问后,如果没有预先配置,用户代理软件通常会提示用户输入用户名和口令,产生一个摘要响应,并将这个响应发送给服务器。例如,摘要响应可能如下:

 

Digest username="jan", realm="iptel.org",

nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="sip:iptel.org",

qop=auth, nc=00000001, cnonce="0a4f113b",

response="6629fae49393a05397450978507c4ef1", opaque=""

 

摘要响应类似于摘要盘问。相同的参数则与摘要盘问有相同的意义。这里只描述新的参数:

uri(统一资源指示符):这个参数包含了客户端想要访问的URI。

qop:客户端选择的保护方式。

 

nc:现时计数器,这是一个16进制的数值,即客户端发送出请求的数量(包括当前这个请求),这些请求都使用了当前请求中这个现时值。例如,对一个给定的现时值,在响应的第一个请求中,客户端将发送nc=00000001。这个指示值的目的,是让服务器保持这个计数器的一个副本,以便检测重复的请求。如果这个相同的值看到了两次,则这个请求是重复的。

 

cnonce:这也是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护。

 

response(响应):这是由用户代理软件计算出的一个字符串,以证明用户知道口令。

 

当服务器接收到摘要响应,也要重新计算响应中各参数的值,并利用客户端提供的参数值,和服务器上存储的口令,进行比对。如果计算结果与收到的客户响应值是相同的,则客户已证明它知道口令,

因而客户的身份验证通过。`

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP Digest authentication 的相关文章

  • HTTP 和 HTTPS iframe

    我正在创建一个小部件 我想允许其他人使用它 这iframe通过 HTTP 加载 但我想允许用户通过 HTTPS 登录 即通过 SSL 发送登录请求 同源策略中允许这样做吗 即 场景是用户可以将我的 JavaScript 集成到他们的网站 小
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 外部依赖错误的 HTTP 状态代码

    当服务器与外部 API 通信出现问题时 返回的正确 HTTP 状态代码是什么 假设客户端向我的服务器 A 发送有效请求 然后 A 查询服务器 B 的 API 以便执行某些操作 然而 B 的 API 当前抛出 500 错误或因某种原因无法访问
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • HTTP代理服务器

    我开始研究一个用 C 编写的非常基本的 HTTP 代理服务器 Edit 只是转发我的请求的东西 此时我很难理解如何继续 任何帮助都会有益的 看一眼micro proxy http acme com software micro proxy
  • 返回重定向作为对 Ajax(fetch、XHR 等)请求的响应

    如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果服务器发送重定向 又名 302 响应加上 Location 标头 浏览器将自动遵循重定向 对此的回应second请求 假
  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的
  • 使用 AFNetworking 重置基本身份验证凭据

    我正在编写一个 REST 客户端 使用 AFNetworking 并且需要能够在应用程序的单个实例中触发新会话的创建 换句话说 我想 1 通过服务器进行身份验证2 进行一些 REST 调用3 模拟 注销 4 重新与服务器进行身份验证5 进行
  • 实施令牌认证

    在我的网页中实施令牌身份验证必须遵循哪些步骤 任何摘要或链接将不胜感激 我想实现类似于 Facebook 或 Google 的功能 首次客户端登录并接收令牌 然后在下一步操作中使用它 我还阅读了有关 OAuth 的内容 但我不想让第三方访问
  • Spring Security从数据库获取用户ID

    我正在使用 spring security 进行身份验证并成功获得User目的 org springframework security core userdetails User 任何我需要的地方 但我想要UserId还有 春天里没有的U
  • 有没有办法在 Blazor 中进行外部身份验证而不使用数据库?

    所以本质上我有一个 Blazor 服务器端应用程序 我正在尝试使用 Azure AD SAML 添加外部身份验证 我在用Sustainsys Saml2 AspNetCore2用于外部身份验证的包 我不太熟悉 ASP NET 或 Blazo
  • 在 GraphQL 服务器中实现访问控制的好模式是什么?

    背景 我有一组模型 包括用户和各种其他模型 其中一些模型包含对用户的引用 我公开这些模型 以便通过 GraphQL API 生成的查询Graffiti https github com RisingStack graffiti 由 Mong
  • GET 和 POST 方法有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 什么时候用POST 什么时候用GET https stackoverflow com questions 46585 when do you use post and when do you use
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • 使用 OWIN Ws-Federation 包针对 ADFS 3.0 进行身份验证

    我有一个MVC内网站点 需要使用AD帐户进行身份验证 我设置了 ADFS 3 0 Windows Server 2012 R2 并遵循this http www cloudidentity com blog 2014 02 12 use t

随机推荐

  • 解决import torch 报错:Failed to load image Python extension: warn(f“Failed to load image Python extens

    配置yolov5 下载地址 xff1a torch 和 torchvision的 下载完之后发现import torch没问题 但是import torchvision报错了 查阅资料原来是版本对不上 7条消息 PyTorch碎片 xff1
  • Mac电脑 - “USB 10/100 LAN”的电缆可能未插好,或另一端的设备没有响应。

    Mac突然就无法上网了 有可能装个驱动就好了 xff0c 前提是确保你的网卡芯片是realtek的 解决方法 xff1a 下这个驱动 xff0c 就好了
  • show engine innodb status解读

    注 xff1a 以下内容为根据 高性能mysql第三版 和 mysql技术内幕innodb存储引擎 的innodb status部分的个人理解 xff0c 如果有错误 xff0c 还望指正 xff01 xff01 innodb存储引擎在sh
  • Vuex速学篇:(1)基本套路

    我们前面做了一个这样的页面 xff0c 为了增加我们的学习难度 xff0c 我们特意拆分成了不同的组件 我们知道 xff0c 我们在子组件里并不能直接对兄弟组件里的属性进行操作 xff0c 我们通过this emit 调用父组件的方法 xf
  • ElementUI案例演示:导航、布局、加载动画

    知识点 1 vue router之嵌套路由 http router vuejs org zh cn essentials nested routes html 2 element ui 导航组件 布局组件 加载动画 http element
  • ElementUI之表单验证、数据绑定、路由跳转

    1 新建表单组件el form vue span class hljs tag lt span class hljs title template span gt span span class hljs tag lt span class
  • vue-router: 嵌套路由

    模板抽离 我们已经学习过了Vue模板的另外定义形式 xff0c 使用 lt template gt lt template gt span class hljs comment lt 模板抽离出来 gt span span class hl
  • react.js的两种路由方式:HashRouter

    react js路由 初步 前面我们已经了解了react js其中一种路由方式 这种方式是利用 html5的 span class hljs escape 96 w span indow history span class hljs es
  • 入手python绘图包:matplotlib,画直线、画抛物线

    入手python绘图包 xff1a matplotlib 官方地址 xff1a http matplotlib org github地址 xff1a http github com matplotlib matplotlib 学习一款图形化
  • 使用CMake构建OpenCV项目

    上一篇文章中 xff0c 我们介绍了如何在ubuntu上安装配置OpenCV xff0c 这篇文章我们来对我们的安装进行测试 xff0c 并介绍如何用CMake工具快捷地构建OpenCV项目 项目结构 为了使整个项目更加条理 xff0c 我
  • Ubuntu连接不了网络的解决方法亲测可行经验

    突然发现Ubuntu连不上网络 xff0c 网络打问号或者右上角也没有网络图标 xff1b 楼主一般通过前两步就解决了 xff0c 大家自行查阅网络服务名称 xff0c OK直接进入正题 通过命令行方式重启网络 如果你使用的 Ubuntu
  • 解决 ImportError: C extension: No module named ‘pandas._libs.tslib‘ not built.

    yolo配置 报错 nvidia 64 nx yolov5 master python3 detect py Traceback most recent call last File 34 usr lib python3 dist pack
  • python subprocess获取stdout和stderr

    本文转载自http www firefoxbug com index php archives 2419 xff0c 如有版权问题请联系博主删除 用subprocess的时候 xff0c 怎么获取stdout和stderr xff1f 下面
  • 关于Libcurl双向认证请求https

    之前通过libcurl开发只是做http请求 xff0c 这次公司项目需要请求https xff0c 所以就研究了一下 xff0c 其实用libcurl做http请求是非常简单的 xff0c 所有底层实现都被封装到了libcurl里面 xf
  • Kubernates简介

    Kubernates简介 应用程序的开发部署变化 从单体应用到微服务 单体应用的缺点 由多个彼此耦合的组件组成 开发 部署 管理必须以同一个实体进行 即使对某个组件的小修改也需要重新部署整个应用 组件之间没有严格的边界定义 相互依赖 随着功
  • pipenv 无法获取系统环境变量

    今天遇到了一个有意思的问题 项目是使用pipenv作为虚环境来进行包管理的 xff0c 今天在windows server 2012R2和windows server 2016上发现python脚本在运行的过程中 xff0c 不能读取到系统
  • 创客基地oDrive第二课 X2212电机配置

    淘宝套装链接 B站视频链接 2021年3月31日前 入Q群 xff08 732557609 xff09 可抽奖oDrive主板 xff01 B站视频 创客基地oDrive第二课 X2212电机配置 第1部分 硬件介绍 1 1 硬件清单 oD
  • Makerbase X2212电流环(转矩)配置

    该配置基于X2212电机 xff0c 控制模式为电流环 xff08 转矩 xff09 模式 主板参数 电机参数 编码器参数配置和位置环控制一样 xff0c 已配置可直接跳转到控制器配置 xff0c 没有配置的按以下步骤配置 1 恢复默认参数
  • Postman -中文版-安装教程

    一 下载 安装 Postman 下面是历史版本的下载链接地址 请把链接中的 34 版本号 34 替换为指定的版本号 xff08 根据自己的需求变更 xff09 Windows64位 xff1a https dl pstmn io downl
  • HTTP Digest authentication

    Digest authentication xff09 是一个简单的认证机制 xff0c 最初是为 HTTP 协议开发的 xff0c 因而也常叫做 HTTP 摘要 xff0c 在 RFC2671 中描述 其身份验证机制很简单 xff0c 它