摘要访谒认证是一种协议规定的Web处事器用来同网页浏览器进行认证信息协商的要领。它在暗码发出前,先对其应用哈希函数,这相对付HTTP根基认证发送明文而言,更安适。从技术上讲,摘要认证是使用随机数来阻止进行暗码分析的MD5加密哈希函数应用。它使用HTTP协议。
一、摘要认证根基流程:
1.客户端请求 (无认证)
Html代码
GET /dir/index.html HTTP/1.0 Host: localhost
2.处事器响应
处事端返回401未验证的状态,并且返回WWW-Authenticate信息,包罗了验证方法Digest,realm,qop,nonce,opaque的值。此中:
Digest:认证方法;
realm:范围,范围参数是强制的,在所有的查问中都必需有,它的目的是分辩SIP动静中的机密,在SIP实际应用中,它凡是设置为SIP代办代理处事器所卖力的域名;
qop:掩护的质量,这个参数规定处事器撑持哪种掩护方案,客户端可以从列表中选择一个。值 “auth”暗示只进行身份检验, “auth-int”暗示进行检验外,还有一些完整性掩护。需要看更详细的描述,请参阅RFC2617;
nonce:为一串随机值,不才面的请求中会一直使用到,当过了存活期后处事端将刷新生成一个新的nonce值;
opaque:一个不透明的(不让外人知道其意义)数据字符串,在查问中发送给用户。
Html代码
HTTP/1.0 401 Unauthorized Server: HTTPd/0.9 Date: Sun, 10 Apr 2005 20:26:47 GMT WWW-Authenticate: Digest realm="[email protected]", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"
3.客户端请求 (用户名 "Mufasa", 暗码 "Circle Of Life")
客户端接受到请求返回后,进行HASH运算,返回Authorization参数
此中:realm,nonce,qop由处事器孕育产生;
uri:客户端想要访谒的URI;
nc:“现时”计数器,这是一个16进制的数值,即客户端发送出请求的数量(包孕当前这个请求),这些请求都使用了当前请求中这个“现时”值。例如,对一个给定的“现时”值,在响应的第一个请求中,客户端将发送“nc=00000001”。这个指示值的目的,是让处事器连结这个计数器的一个副本,以便检测反复的请求。如果这个不异的值看到了两次,则这个请求是反复的;
cnonce:这是一个不透明的字符串值,,由客户端供给,并且客户端和处事器城市使用,以制止用明文文本。这使得双方都可以检验对方的身份,并对动静的完整性供给一些掩护;
response:这是由用户代办代理软件计算出的一个字符串,以证明用户知道口令。
Html代码
response计算过程: HA1=MD5(A1)=MD5(username:realm:password) 如果 qop 值为“auth”或未指定,那么 HA2 为 HA2=MD5(A2)=MD5(method:digestURI) 如果 qop 值为“auth-int”,那么 HA2 为 HA2=MD5(A2)=MD5(method:digestURI:MD5(entityBody)) 如果 qop 值为“auth”或“auth-int”,那么如下计算 response: response=MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2) 如果 qop 未指定,那么如下计算 response: response=MD5(HA1:nonce:HA2)
请求头:
Html代码
GET /dir/index.html HTTP/1.0 Host: localhost Authorization: Digest username="Mufasa", realm="[email protected]", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/dir/index.html", qop=auth, nc=00000001, cnonce="0a4f113b", response="6629fae49393a05397450978507c4ef1", opaque="5ccc069c403ebaf9f0171e9517f40e41"
4.处事器响应
当处事器接收到摘要响应,也要从头计算响应中各参数的值,并操作客户端供给的参数值,和处事器上存储的口令,进行比对。如果计算功效与收到的客户响应值是不异的,则客户已证明它知道口令,因而客户的身份验证通过。
Html代码
HTTP/1.0 200 OK
二、处事端验证
编写一个自界说动静措置惩罚惩罚器
WebApi接口安适认证——HTTP之摘要认证