您好,欢迎访问沃航(武汉)科技有限公司官方网站
http digest认证
2019-06-01 13:29:56

首先确认http的返回code,200是正常返回,401代表认证不通过。因此,当收到401请求后,就需要进行认证流程了。

首先获取收到401请求的返回中,返回头部的Www-Authenticate字段的值。

这个值是由若干个key=value结构组成,通过逗号分割的,其中opaque字段可能有,也可能没有,如下所示:

realm=12345,nonce=67890,opaque=abcde

收到这三个参数后,需要准备几个数据

nonce,就是服务器直接返回的数据

ha1 = Md5(hkuser + ":" + realm + ":" + hkpass)

hkuser,hkpass是账号密码

ha2 = Md5(method + ":" + url)

method是请求类型,如:GET,POST,PUT,DELETE,url为当前的请求链接,不包括域名。

如果请求链接为https://www.worldflying.cn/iot.html,那么url就是/iot.html

nc,是当前的请求类型(method)的第几次请求,使用8位16进制显示,如第10次请求就为0000000a

cnonce,这个是一个8位随机字符串,可包含数字与小写字母。

然后将上面的数据合成

response = Md5(ha1 + ":" + nonce + ":" + nc + ":" + cnonce + ":auth:" + ha2)

authorization = "Digest username=\"" + hkuser + "\",realm=\"" + realm + "\",nonce=\"" + nonce + "\",uri=\"" + url + "\",qop=auth,nc=" + nc + ",cnonce=\"" + cnonce + "\",response=\"" + response + "\"" + "\",opaque=\"" + opaque + "\""

注意最后一个参数就是服务器返回的opaque,如果服务器不返回opaque,这里你不要添加这个字段。

最后通过req.Header.Add("Authorization", authorization)方法添加到下次请求的头部,然后发出请求即可。


作者:沃航科技

联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn