应用程序向IIS传送身份验证.docx
- 文档编号:8167404
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:21.59KB
应用程序向IIS传送身份验证.docx
《应用程序向IIS传送身份验证.docx》由会员分享,可在线阅读,更多相关《应用程序向IIS传送身份验证.docx(14页珍藏版)》请在冰豆网上搜索。
应用程序向IIS传送身份验证
应用程序向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
四、一个应用程序访问webservices的例子8
1.1.Webservices端代码8
1.2.Soap调用webservices的格式8
1.3.客户端应用调用webservices代码9
前面那篇文章《IIS的各种身份验证详细测试》讨论的是客户端为IE访问IIS的各种身份验证的情况,这篇文章讨论一般应用程序如何应对IIS的各种身份验证,把身份凭据传送到IIS服务端。
无论是访问一般的网页,还是访问webservices,都是通过http协议来完成的,相应的dotnet类库中提供了HttpWebRequest类来实现http的各种访问控制。
一、 匿名访问
服务端IIS设置为允许匿名访问,客户端使用HttpWebRequest发送一个get请求,请求一个页面。
//根据需要访问的URL新建HttpWebRequest对象
HttpWebRequestmyHttpWebRequest=(HttpWebRequest)HttpWebRequest.Create("http:
//192.168.100.82/iisstart.htm");
myHttpWebRequest.Method="GET";
//发送http请求,接收回应到HttpWebResponse对象
HttpWebResponsemyWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
//获得http回应的内容部分,是个Stream类型的对象
StreamnewStream=myWebResponse.GetResponseStream();
byte[]byteResponse=newbyte[myWebResponse.ContentLength];
newStream.Read(byteResponse,0,(int)myWebResponse.ContentLength);
//最后把http回应部分内容转成string
stringstrContent=Encoding.UTF8.GetString(byteResponse);
myWebResponse.Close();
抓数据包看这个http的请求和回应过程就是这样的:
1、客户端发送一个匿名的http请求
GET/iisstart.htmHTTP/1.1
Host:
192.168.100.82
Connection:
Keep-Alive
2、IIS直接返回请求的页面内容
HTTP/1.1200OK
Content-Length:
200
Content-Type:
text/html
Last-Modified:
Fri,23Nov200707:
00:
18GMT
Accept-Ranges:
bytes
ETag:
"6084ba819e2dc81:
32a"
Server:
Microsoft-IIS/6.0
MicrosoftOfficeWebServer:
5.0_Pub
X-Powered-By:
ASP.NET
Date:
Fri,23Nov200707:
00:
44GMT
.Thisisasamplepage!