加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService身份验证

发布时间:2020-12-16 22:43:47 所属栏目:安全 来源:网络整理
导读:Web Service身份验证解决方案一:通过通过SOAP Header身份验证。 1.我们实现一个用于身份验证的类,文件名MySoapHeader.cs MySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证

Web Service身份验证解决方案一:通过通过SOAP Header身份验证。

1.我们实现一个用于身份验证的类,文件名MySoapHeader.cs

MySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证的函数ValideUser。它提供了对UserName和PassWord检查的功能

 
 
  1. using?System; ?
  2. using?System.Data; ?
  3. using?System.Configuration; ?
  4. using?System.Web; ?
  5. using?System.Web.Security; ?
  6. using?System.Web.UI; ?
  7. using?System.Web.UI.HtmlControls; ?
  8. using?System.Web.UI.WebControls; ?
  9. using?System.Web.UI.WebControls.WebParts; ?
  10. using?System.Web.Services; ?
  11. using?System.Web.Services.Protocols; ?
  12. ///? ?
  13. ///MySoapHeader?的摘要说明 ?
  14. ///? ?
  15. public?class?MySoapHeader:SoapHeader ?
  16. { ?
  17. ????public?MySoapHeader() ?
  18. ????{ ?
  19. ????????// ?
  20. ????????//TODO:?在此处添加构造函数逻辑 ?
  21. ????????// ?
  22. ????} ?
  23. ????public?string?UserName; ?
  24. ????public?string?PassWord; ?
  25. ????public?bool?ValideUser(string?in_UserName,?string?in_PassWord)??? ?
  26. ????{ ?
  27. ????????if?((in_UserName?==?"zxq")?&&?(in_PassWord?==?"123456")) ?
  28. ????????{ ?
  29. ????????????return?true; ?
  30. ????????} ?
  31. ????????else ?
  32. ????????{ ?
  33. ????????????return?false; ?
  34. ????????} ?
  35. ????} ?
  36. }?

2.下面我们创建WebService.asmx??? WebService.cs代码如下:

using?System.Collections; ?
  
  
  • using?System.Web; ?
  • ?
  • ///? ?
  • ///WebService?的摘要说明 ?
  • ///? ?
  • [WebService(Namespace?=?"http://tempuri.org/")] ?
  • [WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)] ?
  • public?class?WebService?:?System.Web.Services.WebService ?
  • { ?
  • ?
  • ????public?WebService() ?
  • ????{ ?
  • ?
  • ????????//如果使用设计的组件,请取消注释以下行? ?
  • ????????//InitializeComponent();? ?
  • ????} ?
  • ????public?MySoapHeader?header;?////定义用户身份验证类变量header ?
  • ????[WebMethod(Description?=?"用户验证测试")] ?
  • ????[System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头? ?
  • ????public?string?HelloWorld(string?contents) ?
  • ????{ ?
  • ????????//验证是否有权访问? ?
  • ????????if?(header.ValideUser(header.UserName,?header.PassWord)) ?
  • ????????{ ?
  • ????????????return?contents?+?"执行了"; ?
  • ????????{ ?
  • ????????????return?"您没有权限访问"; ?
  • } ?
  • 3.客户端 创建个Default.aspx

     
     
    1. Default.aspx?.cs代码 ?
    2. ?
    3. using?System; ?
    4. using?System.Configuration; ?
    5. using?System.Data; ?
    6. using?System.Web; ?
    7. using?System.Web.Security; ?
    8. using?System.Web.UI; ?
    9. using?System.Web.UI.HtmlControls; ?
    10. using?System.Web.UI.WebControls; ?
    11. using?System.Web.UI.WebControls.WebParts; ?
    12. ?
    13. public?partial?class?_Default?:?System.Web.UI.Page? ?
    14. { ?
    15. ????protected?void?Page_Load(object?sender,?EventArgs?e) ?
    16. ????{ ?
    17. ????????com.cn1yw.WebService?test?=?new?com.cn1yw.WebService();//web引用(改成您自己的) ?
    18. ????????com.cn1yw.MySoapHeader?Header?=?new?com.cn1yw.MySoapHeader();//web引用创建soap头对象(改成您自己的) ?
    19. ????????//设置soap头变量 ?
    20. ????????Header.UserName?=?"zxq"; ?
    21. ????????Header.PassWord?=?"123456"; ?
    22. ????????test.MySoapHeaderValue?=?Header; ?
    23. ????????//调用web?方法 ?
    24. ????????Response.Write(test.HelloWorld("我是强")); ?
    25. ????} ?
    26. }?

    Web Service身份验证解决方案二:通过集成windows身份验证。

    1. 将web服务程序设为集成windows身份验证

    2.客户端web引用代码?

  • Test.WebReference.Service1?wr?=?new?Test.WebReference.Service1();?//生成web?service实例? ?
  • wr.Credentials?=?new?NetworkCredential("guest","123");?//guest是用户名,该用户需要有一定的权限? ?
  • lblTest.Text?=?wr.Add(2,2).ToString();?//调用web?service方法??
  • 该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读