- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用程序向IIS传送身份验证
一、 匿名访问 1
1、 客户端发送一个匿名的http请求 2
2、 IIS直接返回请求的页面内容 2
二、 Windows集成验证 2
1、 客户端和服务端机器都在域,客户端以域帐户登录,以服务器名访问 3
1.1. 第一次HttpWebRequest先以匿名发送http请求 3
1.2. 服务端返回无授权回应 3
1.3. 再次请求,选择Kerberos验证,附带上此用户的验证票 3
1.4. 服务端验证通过,返回页面 4
2、 客户端和服务端机器都在域,客户端以域帐户登录,以服务器名访问以外的所有情况 5
2.1. 第一次HttpWebRequest先以匿名发送http请求 5
2.2. 服务端返回无授权回应 5
2.3. HttpWebRequest选择NTLM验证,请求质询码 5
2.4. 服务器返回质询码 5
2.5. HttpWebRequest发送登录本机的账户加密后的质询码 5
2.6. 服务器通过验证,返回页面 6
3、 客户端传送定制用户凭据到服务端 6
三、 基本身份验证 6
1.1. 第一次HttpWebRequest先以匿名发送http请求 7
1.2. 服务端返回无授权回应 7
1.3. HttpWebRequest发送base64格式的用户名和密码 7
1.4. 服务器通过验证,返回页面 7
四、 一个应用程序访问web services的例子 8
1.1. Web services端代码 8
1.2. Soap调用web services的格式 8
1.3. 客户端应用调用web services代码 9
?
?
前面那篇文章《 HYPERLINK /chnking/archive/2007/11/20/965553.html IIS的各种身份验证详细测试》讨论的是客户端为IE访问IIS的各种身份验证的情况,这篇文章讨论一般应用程序如何应对IIS的各种身份验证,把身份凭据传送到IIS服务端。
无论是访问一般的网页,还是访问web services,都是通过http协议来完成的,相应的dotnet类库中提供了HttpWebRequest类来实现http的各种访问控制。
?
一、? 匿名访问
服务端IIS设置为允许匿名访问,客户端使用HttpWebRequest发送一个get请求,请求一个页面。
//根据需要访问的URL新建HttpWebRequest对象
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(2/iisstart.htm);
myHttpWebRequest.Method = GET;
?
//发送http请求,接收回应到HttpWebResponse对象
HttpWebResponse myWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
?
//获得http回应的内容部分,是个Stream类型的对象
Stream newStream = myWebResponse.GetResponseStream();
byte[] byteResponse = new byte[myWebResponse.ContentLength];
newStream.Read(byteResponse, 0, (int)myWebResponse.ContentLength);
?
//最后把http回应部分内容转成string
string strContent = Encoding.UTF8.GetString(byteResponse);
myWebResponse.Close();
?
抓数据包看这个http的请求和回应过程就是这样的:
1、 客户端发送一个匿名的http请求
GET /iisstart.htm HTTP/1.1
Host: 2
Connection: Keep-Alive
2、 IIS直接返回请求的页面内容
HTTP/1.1 200 OK
Content-Length: 200
Content-Type: text/html
Last-Modified: Fri, 23 Nov 2007 07:00:18 GMT
Accept-Ranges: bytes
ETag: 6084ba819e2dc81:32a
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Date: Fri, 23 Nov 2007 07:00:44 GMT
?
html
?
head
meta HT
文档评论(0)