lijinchang

导航

WebService三种验证方式

Web Service 验证方式<一>SoapHeader验证

服务端代码:

注意第7行,需要加[SoapHeader("authHeader")] 特性。

           

 1     public class GetDataList : System.Web.Services.WebService
 2     {
 3         public AuthHeader authHeader;
 4

 5         
 6         [WebMethod]
 7         [SoapHeader("authHeader")]
 8         public string GetBookList()
 9         {
10             string xmlStr = string.Empty;
11             try

12             {
13

14                 if (authHeader == null)
15                 {
16                     XmlDocument xmlDoc = new XmlDocument();
17                     XmlDeclaration xmlDec;
18                     xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
19                     XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
20                     XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
21                     xmlAtt.InnerText = "true";
22                     XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
23                     xmlChild.Attributes.Append(xmlAtt);
24                     xmlChild.InnerText = "AuthHeader
对象不存在";
25                     xmlEle.AppendChild(xmlChild);
26                     xmlDoc.AppendChild(xmlEle);
27

28                     xmlStr = xmlDoc.InnerXml;
29

30                     return xmlStr;
31                 }
32                 if (!authHeader.Verify())
33                 {
34                     XmlDocument xmlDoc = new XmlDocument();
35                     XmlDeclaration xmlDec;
36                     xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
37                     XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
38                     XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
39                     xmlAtt.InnerText = "true";
40                     XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
41                     xmlChild.Attributes.Append(xmlAtt);
42                     xmlChild.InnerText = "
验证失败";
43                     xmlEle.AppendChild(xmlChild);
44                     xmlDoc.AppendChild(xmlEle);
45

46                     xmlStr = xmlDoc.InnerXml;
47

48                     return xmlStr;
49                 }
50

51                 DataSet ds = new DataSet();
52                 DataTable tb = new DataTable("BookList");
53                 DataColumn dc0 = new DataColumn("Code", Type.GetType("System.String"));
54                 DataColumn dc1 = new DataColumn("BookName", Type.GetType("System.String"));
55                 DataColumn dc2 = new DataColumn("BookPrice", Type.GetType("System.Single"));
56                 DataColumn dc3 = new DataColumn("UpdateTime", Type.GetType("System.DateTime"));
57

58
59                 tb.Columns.Add(dc0);
60                 tb.Columns.Add(dc1);
61                 tb.Columns.Add(dc2);
62                 tb.Columns.Add(dc3);
63

64                 DataRow dr = tb.NewRow();
65                 dr[0] = "c0001";
66                 dr[1] = "
世界地理";
67                 dr[2] = "9.98";
68                 dr[3] = DateTime.Now;
69                 tb.Rows.Add(dr);
70

71                 dr = tb.NewRow();
72                 dr[0] = "c0002";
73                 dr[1] = "
世界历史";
74                 dr[2] = "9.95";
75                 dr[3] = DateTime.Now;
76                 tb.Rows.Add(dr);
77

78                 ds.Tables.Add(tb);
79                 xmlStr = ds.GetXml();
80             }
81             catch (Exception ex)
82             {
83                 xmlStr= ex.ToString();
84             }
85

86             return xmlStr;
87         }
88     }
89 }

 

           

客户端调用代码:

OA_WebService 添加web 引用时声明的命名空间。

           

 1     protected void btnRun_Click(object sender, EventArgs e)
 2     {
 3         OA_WebService.GetDataList oaWebSerive = new OA_WebService.GetDataList();
 4

 5         OA_WebService.AuthHeader authHeader = new OA_WebService.AuthHeader();
 6

 7         authHeader.UserCode = "alpha";
 8         authHeader.UserPwd = "123456";
 9

10         oaWebSerive.AuthHeaderValue = authHeader;
11

12         string str = oaWebSerive.GetBookList();
13

14         Response.Write(str);
15     }

 

           

Web Service 验证方式<二>IIS验证(windows集成验证)


需要设置IIS“不允许匿名”访问并且需要选择“集成windows验证”,该验证方式服务端方法只有声明为[WebMethod]方法,不需要其他验证代码。

客户端调用代码,注意第5行,需要实例化webservice代理类的Credentials属性。

           

1     protected void Button1_Click(object sender, EventArgs e)
2     {
3         //将web服务程序设为集成windows身份验证,需要将匿名访问关闭
4          OA_WebService.GetDataListByIIS webService = new OA_WebService.GetDataListByIIS();
5         webService.Credentials = new System.Net.NetworkCredential("alpha", "123456");
6         string str = webService.GetBookList();
7         Response.Write(str);
8     }

 

           

Web Service 验证方式<三>Session验证

服务端代码,需要设置[WebMethod(EnableSession=true)] 允许Session。

           

 1 public class GetDataListBySeesion : System.Web.Services.WebService
 2     {
 3         [WebMethod(EnableSession=true)]
 4         public bool Verify(string userName,string pwd)
 5         {
 6             if (userName.Equals("alpha") && pwd.Equals("123456"))
 7             {
 8                 Session["LoginStatus"] = true;
 9             }
10             else

11             {
12                 Session["LoginStatus"] = false;
13             }
14

15             return (bool)Session["LoginStatus"];
16         }
17

18         [WebMethod(EnableSession=true)]
19         public string GetBookList()
20         {
21             string xmlStr = string.Empty;
22             try

23             {
24

25                 if (Session["LoginStatus"] == null || Session["LoginStatus"].Equals(false))
26                 {
27                     XmlDocument xmlDoc = new XmlDocument();
28                     XmlDeclaration xmlDec;
29                     xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
30                     XmlElement xmlEle = xmlDoc.CreateElement(null, "soapheader", null);
31                     XmlAttribute xmlAtt = xmlDoc.CreateAttribute("allowView");
32                     xmlAtt.InnerText = "true";
33                     XmlElement xmlChild = xmlDoc.CreateElement(null, "status", null);
34                     xmlChild.Attributes.Append(xmlAtt);
35                     xmlChild.InnerText = "
验证失败";
36                     xmlEle.AppendChild(xmlChild);
37                     xmlDoc.AppendChild(xmlEle);
38                     xmlStr = xmlDoc.InnerXml;
39                     return xmlStr;
40                 }      
41

42                 DataSet ds = new DataSet();
43                 DataTable tb = new DataTable("BookList");
44                 DataColumn dc0 = new DataColumn("Code", Type.GetType("System.String"));
45                 DataColumn dc1 = new DataColumn("BookName", Type.GetType("System.String"));
46                 DataColumn dc2 = new DataColumn("BookPrice", Type.GetType("System.Single"));
47                 DataColumn dc3 = new DataColumn("UpdateTime", Type.GetType("System.DateTime"));
48

49
50                 tb.Columns.Add(dc0);
51                 tb.Columns.Add(dc1);
52                 tb.Columns.Add(dc2);
53                 tb.Columns.Add(dc3);
54

55                 DataRow dr = tb.NewRow();
56                 dr[0] = "c0001";
57                 dr[1] = "
世界地理";
58                 dr[2] = "9.98";
59                 dr[3] = DateTime.Now;
60                 tb.Rows.Add(dr);
61

62                 dr = tb.NewRow();
63                 dr[0] = "c0002";
64                 dr[1] = "
世界历史";
65                 dr[2] = "9.95";
66                 dr[3] = DateTime.Now;
67                 tb.Rows.Add(dr);
68

69                 ds.Tables.Add(tb);
70                 xmlStr = ds.GetXml();
71             }
72             catch (Exception ex)
73             {
74                 xmlStr = ex.ToString();
75             }
76

77             return xmlStr;
78         }
79     }

 

           

客户端代码 ,注意第5行,需要实例化代理类的CookieContainer属性。否则会验证失败。

           

 1     protected void btnGoto_Click(object sender, EventArgs e)
 2     {
 3         OA_WebService.GetDataListBySeesion book = new OA_WebService.GetDataListBySeesion();
 4
 5         book.CookieContainer = new System.Net.CookieContainer();
 6
 7         if (book.Verify("alpha", "123456"))
 8         {
 9             string str = book.GetBookList();
10
11             Response.Write(str);
12         }
13     }

 

posted on 2013-04-19 14:11  lijinchang  阅读(565)  评论(0编辑  收藏  举报