Digest authentication

“摘要”式认证( Digestauthentication)是一个简单的认证机制,最初是为HTTP协议开发的,因而也常叫做HTTP摘要,在RFC2671中描述。其身份验证机制很简单,它采用杂凑式(hash)加密方法,以避免用明文传输用户的口令。
摘要认证就是要核实,参与通信的双方,都知道双方共享的一个秘密(即口令)。

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

Digest realm="iptel.org", qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="",algorithm=MD5

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

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

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

nonce(现时):这是由服务器规定的数据字符串,在服务器每次产生一个摘要盘问时,这个参数都是不一样的(与前面所产生的不会雷同)。“现时”通常是由一些数据通过md5杂凑运算构造的。这样的数据通常包括时间标识和服务器的机密短语。这确保每个“现时”都有一个有限的生命期(也就是过了一些时间后会失效,并且以后再也不会使用),而且是独一无二的(即任何其它的服务器都不能产生一个相同的“现时”)。

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

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


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(响应):这是由用户代理软件计算出的一个字符串,以证明用户知道口令。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于DateTime和String转换的容易犯得错误

在开发中,常常会有DataTime类型和String类型的互相转换的要求,比较常用的写法是 var date Convert.ToDateTime("2012/06/08 09:10:10"); 咋一看这个代码好像没有什么问题, 实际运行也没发现问题。但是客户的机器上却是有转换的异常…

软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

基于AT89C1单片机C语言编写的计算器#include#define uint unsigned int#define uchar unsigned charsbit dulaP2^6;sbit welaP2^7;sbit key1P3^4;uchar code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};uchar num,temp,num1…

Asterisk Queue呼叫中心的实现

1.先在sip.conf中建立若干个sip账号 如&#xff1a; [2207] typefriend mailbox2207 dtmfmoderfc2833 callgroup hostdynamic username2207 secret2207 canreinviteyes contextinternal calleridsch<2207> pickupgroup accountcode natyes disallowall allowilbc allowal…

stub 和 skeleton 的讲解,自己实现一个stub和skeleton程序

RMI的本质就是实现在不同JVM之间的调用,它的实现方法就是在两个JVM中各开一个Stub和Skeleton&#xff0c;二者通过socket通信来实现参数和返回值的传递。 有关RMI的例子代码网上可以找到不少,但绝大部分都是通过extend the interface java.rmi.Remote实现&#xff0c;已经封装的…

linux getdents 例子,Linux内建命令和外部命令(整理)

Linux命令有内部命令(内建命令)和外部命令之分&#xff0c;内部命令和外部命令功能基本相同&#xff0c;但也有些细微差别。【内部命令 vs. 外部命令】(1)内部命令实际上是shell程序的一部分&#xff0c;其中包含的是一些比较简单的linux系统命令&#xff0c;这些命令由shell程…

asterisk版本选择

背景&#xff1a;linux环境CentOS搭建好以后&#xff0c;下一步就是安装Asterisk了&#xff0c;但是面临的第一个问题就是面对如此多的版本该如何选择&#xff0c;因此不得不先对Asterisk的版本做一些分析了 一般&#xff0c;软件根据发布的维护的时间长短界定了两种类型&#…

暑假开始了,大家给力啊

Rome was not built in a day. 没有什么能轻易弄就 齐心努力&#xff0c;定能成就转载于:https://www.cnblogs.com/ustcSL/archive/2012/06/15/2550208.html

自己移植Asterisk1.8到OpenWRT下

众所周知OpenWRT是目前最流行的嵌入式Linux之一。支持广泛的CPU包括&#xff1a;x86、MIPS、ARM、PPC等。OpenWRT的trunk中所带的那个asterisk问题很多&#xff0c;缺少很多包&#xff0c;作者似乎仅仅是为了自己使用而移植的&#xff0c;而目前网上除了不详细的官方资料外也无…

延边大学c语言题库,延边大学-SPOC官方网站

课程大纲一、课程教学目的与任务本课程是理工科类的一门非常重要的计算机基础性课程&#xff0c;是学生学习程序设计语言和方法以及数据结构等课程的先导课程。是使学生了解有关程序设计的基本概念及常用术语&#xff0c;学习C 语言的基础知识、基本理论、基本概念和基本方法&a…

VC程序在没装VC的机器中运行

VC程序在没装VC的机器中运行(发表时间: 2008-6-26 16:01:00) 【评论】 【打印】 【字体&#xff1a;大 中 小】 本文链接&#xff1a;http://blog.pfan.cn/miaowei/36283.html复制链接 分享到&#xff1a;0标签:vs.net2005 vs.net2003 没装VC 没有VC 由于工作需要&#xff…

Asterisk PBX 快速安装向导

Asterisk PBX 可以简单的安装到大多数 Linux发行版本上&#xff0c;如 Debian, RedHat等&#xff0c;也可以定制到专用Linux版本运行&#xff0c;如Astlinux就是一个定制系统的例子。Asterisk PBX还可以运行于 Windows的cygwin境下(功能受到较大限制)&#xff0c;我们还曾经试…

STM32单片机读电压电流C语言,STM32单片机怎么检测0-24电压和电流

32的采集范围是0-3.3v你需0-24v电压衰减电路&#xff1a;电压跟随器高精度用运放&#xff0c;中精度用T型网络衰减电路&#xff0c;要求低用电阻分压的。电压缩小到0-3.3v范围内采集&#xff0c;然后用32通过一定比例再计算出实际电压扩展资料&#xff1a;单片机应用范围电路板…

报表中的Excel操作之Aspose.Cells(Excel模板)

本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。这个组件的强大之处&#xff0c;就不多说&#xff0c;对于我们的报表总是会有导出Excel的处理&#xff0c;如果你使用微软Excel的com组件&#xff0c;那么对于简单的操作还行&#xff0c;但是多余复杂的模板&#xff0…

Android usb 权限广播,[Android]USB开发

第一&#xff1a;请求权限和请求权限回调(通过广播回调)注册一个广播接收器用于接收USB权限被同意或拒绝后发出的广播//注册USB设备权限管理广播IntentFilter filter new IntentFilter(ACTION_USB_PERMISSION); //ACTION_USB_PERMISSION为自定义的字符串context.registerRecei…

在飞音G801上运行OpenWRT+Asterisk

上篇文章介绍了如何在华硕RT-N11建立小型的SIP Server&#xff0c;本篇文章介绍将Asterisk移植到更为强大的VOIP网关G801上。G801是北京飞音时代的无线VoIP网关产品&#xff0c;在韩国SKT等运营商中广泛采用。G801支持802.11n 2T2R的无线路由&#xff0c;1WAN 4LAN的以太网&am…

自定义系统菜单

procedure SysMenuCommand(var Msg:TWMMENUSELECT);message WM_SYSCOMMAND;procedure TFormMain.SysMenuCommand(var Msg: TWMMenuSelect); begincase Msg.IDItem of0:beginMessageBox(0,PChar(茶杯),操作提示,MB_OKMB_ICONINFORMATION);end;1:beginMessageBox(0,PChar(书本),操…

android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。

Encrypt(加密工具)字符串&#xff0c;byte[]&#xff0c;文件等对象的加密和解密工具集合&#xff0c;包含了多种加密方案。加密类型摘要相关方法简单加密换一种编码格式Base64Util单向加密只能加密&#xff0c;不能解密MD5Util、SHAUtil对称加密使用相同的秘钥加密和解密AESUt…

开源应用架构之asterisk

作者&#xff1a;Russell Bryant 翻译&#xff1a;jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说&#xff0c;Asterisk是一个服务器应用&#xff0c;能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spen…

垃圾回收

大部分内容来自于&#xff1a; http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 垃圾回收&#xff08;garbage collection&#xff09;机制的基本原则是&#xff1a; 1. 找出程序中不会再被访问到的对象。 2. 回收这部分对象占用的资源&#xff08;内存&a…

android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

Android5.1 壁纸设置流程浅析Ubuntu14.04 Android5.1 Source Insight3这里只是简单分析一下5.1里是如何设置壁纸的&#xff1b;这个流程和4.4有一些不同。但基本都是找个地方存放壁纸文件&#xff0c;需要的时候读取&#xff0c;设置的时候更新这里只看设置的过程。权当参考。…