码迷,mamicode.com
首页 > 其他好文 > 详细

注册(九)重注册

时间:2014-06-20 12:01:12      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:作者qq鸣人370905569

什么是重注册呢?重注册是指在注册的有效期内,重新发起注册消息,来刷新终端的有效期。UAS开启注册鉴权时,需要终端发起的注册消息带上鉴权信息。重注册分为两种,分别如下:重注册消息没有鉴权信息,发起401挑战。重注册消息带有鉴权信息。

我们先关注下,注册鉴权相关字段

realm

显示给用户看的字符串,这样他们就知道使用哪个用户名和口令了。该字符串应当包括至少一个执行鉴别的主机名和对可能访问用户群体的附加项。

domain

指在引号中用空格分隔的 URI 列表。如果 URI 是采用绝对路径,它是相对于被访问服务器‘根’的 URL。该列表中的绝对URI 被用来访问另外一个不同的服务器。客户端可发送同样的鉴别信息来访问由此列表确定的 URI 集合:任何 URI,只要其做为前缀出现在列表中,就可以认为它指向同样的受保护区域。如果表示被忽略或是空值,客户端应这样理解,即,该保护区域由回应服务器的全部 URI 组成。

该表示对代理-鉴别(Proxy-Authenticate)报头没有意义,因为对它们来说,受保护区域总是整个代理(proxy),如果出现,也会被忽略。

nonce

服务器端指定的数据字符,它应在每个 401 回应产生时,被唯一地创建。建议该字符以 base64方式或 16进制方式出现。另外,该字符在报头行中传递时是在引号内的,因此不允许使用双引号字符。 

其内容与实现无关,而其实现的质量取决于良好的选择。例如,nonce 可能以基于 64 位编码来构造,如下例:time-stamp H(time-stamp ":" ETag ":"private-key)

如上,时间戳(time-stamp)是由服务器产生的时间值或其它非重复值;Etag 是 HTTP  与请求实体相关的 ETag 报头的值;private-key 是只有服务器才知道的值。在碰到这种形式的nonce 时,服务器在收到客户鉴别报头后,会对哈希部分进行重新计算,并在 nonce 值与报头不符或其 time-stamp 值不够新时拒绝该请求。通过这种方式,服务器端可以限制 nonce 合法的时间范围。Etag 中的内容将防止对资源的更新版本进行重复请求。(注意:在 nonce 中包括客户端的 IP 地址将向服务器提出要求,即不要再重用同样客户发出的nonce 值。实际上,单个用户发出的请求会穿越多个代理,这样做可能导致该过程的中断。另外,IP 地址也是可以假冒的)有的实现可能会选择不接受先前先用的nonce 或先前使用的摘要,以防止回放式攻击(replay attack)。或者,实现在回应POST|PUT 请求时,也可以选择以前的 nonce 或摘要(digest)和 GET 请求的 time-stamp。

opaque

由服务器指定的字符串,客户端不能改动它,如果并发请求的 URI也指向同一个受保护区间,则该信息将被加在这些请求的授权报头域中返给服务器。建议采用 base64 或 16进制的字符串。

stale

一个标志,用来项客户端先前的请求因其 nonce 值过期而被拒绝。如果stale 是 TRUE(大小写敏感),客户端可能希望用新的加密回应重新进行请求,而不用麻烦用户提供新的用户名和口令。服务器端只有在收到的请求 nonce 值不合法,而该nonce 对应的摘要(digest)是合法的情况下(即客户端知道正确的用户名/口令),才能将 stale 置成TRUE 值。如果 stale 是 FALSE或其它非 TRUE 值,或者其 stale 域不存在,说明用户名、口令非法,要求输入新的值。

algorithm

algorithm是个字符串,用来项用来产生摘要及校验和的算法对。如果该域没指定,则认为是“MD5“算法。如果该域指定的算法无法理解,该质询(challenge)将被忽略。 

qop-options

该项是可选的,用于 RFC2069[6]的向后兼容。它应当被与该摘要方案版本兼容的任何实现所使用。如果存在,它是带引号的一个或多个字符组成的字符串,用来项服务器支持的保护水平(quality of protection)值。”auth”值表示鉴别方式;”auth-int”表示鉴别保护的完整性;见后面为有该项选择的应用程序重新计算回应项值。不能识别的选项必须被忽略。

auth-param 

该项用于未来扩展。任何无法识别的项都必须被忽略。

response

是个字符串,由 32 个经过计算的 16 进制数字组成,用来证明用户是否正确口令。

username

用户名,是指定的 realm 项。

qop

该项指客户端对该消息应用的保护等级(quality of protection)。如果不为空,其值必须是服务器支持在 WWW-鉴别报头中采用的几种值之一。这些值会对请求-摘要(request-digest)的计算造成影响。注意,这是个单独的符号,而不是象WWW-鉴别(WWW-Authenticate)那样,是带引号的可选值列表。该项是可选项,这是为了和RFC2069[6]所规定的最小实现保持向后的兼容性。但是,如果服务器端通过在 WWW-鉴别(WWW- Authenticate)报头域中添加qop 项,就表明该服务器支持 qop,因而,必须使用该项项。 

cnonce

当qop项发送了(见上面),该项必须要指定,而当服务器端没有在WWW-鉴别(WWW- Authenticate)报头域中添加 qop 项时,该项一定不能指定。cnonce-value 是客户端提供的字符串,它由客户端和服务器共同使用,用来避免选择纯文本攻击、提供共同鉴别、提供某些消息的完整性保护。

nonce-count

当qop项发送了(见上面),该项必须要指定,而当服务器端没有在WWW-鉴别(WWW- Authenticate)报头域中添加 qop 项时,该项一定不能指定。nc-value 是 16进制表示的计数值,用来统计客户端发送的带 nonce 值的请求(包括当前请求)个数。例如,在第一个请求回应中给出了nonce的值,客户端发送”nc=00000001",其目的是允许服务器通过对此计算副本的维护来检测请求重复(request replay),即当同样的 nc-value 出现两次,说明请求是可回放的。

注册(九)重注册,布布扣,bubuko.com

注册(九)重注册

标签:作者qq鸣人370905569

原文地址:http://blog.csdn.net/wh8_2011/article/details/28594175

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!