WCF BasicHttpBinding 安全解析(6)Digest验证(IIS宿主)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

Digest验证方式在Basic验证方式的基础上增加了摘要信息,采用的是挑战-应答模式。Digest验证也是Http安全验证的标准(RFC 2617)。

首先我们修改服务端配置文件启用Digest验证,如代码清单11-95。

代码清单11-95 启用Digest验证


<basicHttpBinding>
<binding
name="basicBindingConf">
<security
mode="TransportCredentialOnly">
<transport
clientCredentialType="Digest">
</transport>
</security>
</binding>
</basicHttpBinding>

同样,我们需要配置IIS启用摘要式身份验证,然后更新测试站点的服务引用。

默认情况下是不需要显示传递用户名和密码等信息给服务端的,如果想要传递该信息可以使用代码清单11-96的方式。

代码清单11-96 摘要验证方式显示传递身份信息


p.ClientCredentials.HttpDigest.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
p.ClientCredentials.HttpDigest.ClientCredential =
new System.Net.NetworkCredential("v-samzha","domain_pwd");

如代码清单11-96,摘要验证的身份信息保存在p.ClientCredentials.HttpDigest对象中。

下面我们分析一下摘要验证的过程。

先看代码清单11-97是第发起请求的信息。

代码清单11-97 发起请求


POST http://wcfservicewebsite.com/HelloService.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData:
uIDPo9ymOexINPFJi+3tKDrHjuIAAAAAGYVyeTYe3UqAVZgCC45FRE5qbQJALydCjORFK5/dBBoACQAA
SOAPAction: "http://tempuri.org/IHelloService/GetHello"
Host: wcfservicewebsite.com
Content-Length: 133
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetHello
xmlns="http://tempuri.org/"/></s:Body></s:Envelope>

从代码清单11-97,我们可以看出第一次请求没有提供任何验证信息,肯定是不能通过验证的,那么服务端返回的信息是什么呢?看代码清单11-98。

代码清单11-98 第一次请求失败的服务端信息


HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
WWW-Authenticate: Digest
qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v1b410f2cc9b3070af323f9066253e36c8cf176bcec933cc01c4ff7612615bd9d42b1607c3e122bcba7ca83f47d02c6f1169f78240641df79c",charset=utf-8,realm="
bs--yangwenhai"
X-Powered-By: ASP.NET
Date: Sun, 26 Jun 2011 06:25:13 GMT
Content-Length: 6079

服务端的返回信息中,我们关注代码清单11-98中加粗的部分,它告诉客户端验证方式为Digest,采用的摘要的算法为MD5-sess。qop表示用于服务器回应的保护等级选项,"auth"值表示鉴别;而"auth-int"值则表示采用完整性保护的鉴别。nonce字段是服务器返回的标识,每次请求都不一样,使用如下生产规则:

time-stamp H(time-stamp ":" ETag ":" private-key)

H为采用的摘要算法。

realm=" bs--yangwenhai"声明当前验证的域为bs--yangwenhai。

客户端接收到这样的反馈之后,会发送Digest验证信息给服务端,如代码清单11-99。

代码清单11-99 客户端发送Digest验证信息

POST http://wcfservicewebsite.com/HelloService.svc HTTP/1.1

Content-Type: text/xml; charset=utf-8

VsDebuggerCausalityData: uIDPo9ymOexINPFJi+3tKDrHjuIAAAAAGYVyeTYe3UqAVZgCC45FRE5qbQJALydCjORFK5/dBBoACQAA

SOAPAction: "http://tempuri.org/IHelloService/GetHello"

Accept-Encoding: gzip, deflate,gzip, deflate

Authorization: Digest username="administrator",realm="bs--yangwenhai",nonce="+Upgraded+v1b410f2cc9b3070af323f9066253e36c8cf176bcec933cc01c4ff7612615bd9d42b1607c3e122bcba7ca83f47d02c6f1169f78240641df79c",uri="http://wcfservicewebsite.com/HelloService.svc",cnonce="+Upgraded+v1462dbb5533a1c4c04d59d91a9b10460cfd38ba314128516a4b17391abdc5a273",nc=00000001,algorithm=MD5-sess,response="9aefaca8ec6d904bb0bc43f068e328e2",qop="auth",charset=utf-8,hashed-dirs="service-name,channel-binding",service-name="HTTP/wcfservicewebsite.com",channel-binding="00000000000000000000000000000000"

Host: wcfservicewebsite.com

Content-Length: 133

Expect: 100-continue

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetHello xmlns="http://tempuri.org/"/></s:Body></s:Envelope>

代码清单11-99是客户端发送的验证信息,其中nonce值与服务端返回的值相同,客户端将密码经过Md5加密放在头部传回服务端。服务端接受到该请求之后,从header中提取有效的client credential,并通过LDAP服务,连接至DC,查找相应用户名与摘要信息匹配的domain user。如果找到,说明该 credential有效,则开始处理请求,否则,返回401给客户端。


本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2011/07/01/2095553.html,如需转载请自行联系原作者

相关文章
|
2月前
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
127 6
|
3天前
|
域名解析 负载均衡 安全
DNS技术标准趋势和安全研究
本文探讨了互联网域名基础设施的结构性安全风险,由清华大学段教授团队多年研究总结。文章指出,DNS系统的安全性不仅受代码实现影响,更源于其设计、实现、运营及治理中的固有缺陷。主要风险包括协议设计缺陷(如明文传输)、生态演进隐患(如单点故障增加)和薄弱的信任关系(如威胁情报被操纵)。团队通过多项研究揭示了这些深层次问题,并呼吁构建更加可信的DNS基础设施,以保障全球互联网的安全稳定运行。
|
2月前
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
120 3
|
2月前
|
机器学习/深度学习 人工智能 安全
TPAMI:安全强化学习方法、理论与应用综述,慕工大、同济、伯克利等深度解析
【10月更文挑战第27天】强化学习(RL)在实际应用中展现出巨大潜力,但其安全性问题日益凸显。为此,安全强化学习(SRL)应运而生。近日,来自慕尼黑工业大学、同济大学和加州大学伯克利分校的研究人员在《IEEE模式分析与机器智能汇刊》上发表了一篇综述论文,系统介绍了SRL的方法、理论和应用。SRL主要面临安全性定义模糊、探索与利用平衡以及鲁棒性与可靠性等挑战。研究人员提出了基于约束、基于风险和基于监督学习等多种方法来应对这些挑战。
78 2
|
3月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
406 0
|
7月前
|
网络协议
windows_server2012搭建iis并配置http重定向 iis转发
windows_server2012搭建iis并配置http重定向 iis转发
352 1
|
5月前
|
C++
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
|
5月前
|
开发框架 .NET 中间件
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
|
7月前
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
217 0
|
8月前
|
JavaScript Windows
VUE部署到IIS中报404错误解决方案-配置URL重写
VUE部署到IIS中报404错误解决方案-配置URL重写
328 0

推荐镜像

更多