`
guochunyang2004
  • 浏览: 80296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用ASP.Net Forms模式实现WebService身份验证

 
阅读更多

来源:http://www.cnblogs.com/chinadhf/archive/2006/10/08/520975.html

在安全性要求不是很高的ASP.Net程序中,基于Forms的身份验证是经常使用的一种方式,而如果需要对WebService进行身份验证,最常用的可能是基于Soap 标头的自定义身份验证方式。如果对两者做一下比较的话,显然,基于Forms的验证方式更加方便易用,能否将Forms验证方式应用到WebService中去呢? 从理论上讲,使用基于Forms的方式对WebService进行身份验证是可行的,但是使用过程中会存在以下两个问题: 1.基于Forms的验证方式同时也是基于Cookie的验证方式,在使用浏览器时,这个问题是不需要我们考虑的。但对于使用WebService的应用程序来说,默认是不能保存Cookie的,需要我们自己去做这个工作。 2.WebService既然是一个A<chmetcnv unitname="a" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0">2A</chmetcnv>(Application To Application)应用程序,使用Web表单进行身份验证显然不太合适,而且,这将不可避免的造成人机交互,使WebService的应用大打折扣。 接下来,我们就分步解决这两个问题: 1.Cookie的保存问题 WebService的客户端代理类有一个属性CookieContainer可用于设置或获取Cookie集合,保存Cookie的任务就交给他了: 2.我们不想使用Web表单进行身份验证,幸运的是,ASP.Net表单验证中的表单页(即Web.config文件中 forms 元素内的loginUrl)同样可以指定为WebService文件。 我们创建一个专门用作身份验证的Web服务,暂且命名为Login.asmx,然后让 loginUrl 等于 “Login.asmx”,当然,还需要在Web.config文件中的 authorization 节中禁止匿名访问(否则我们可就白忙活了),完成配置后的Web.config文件如下:

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="false" /> <authentication mode="Forms"> <forms name="MyService" loginUrl="Login.asmx"></forms> </authentication> <authorization > <deny users="?"/> </authorization> </system.web> </configuration>
其实我们并不想在未通过身份验证时让浏览器转向到Login.asmx,对于使用WebService的客户程序来说,真正的实惠在于:可以匿名访问Login.asmx中的方法(当然我们也可以把Login.asmx放在单独的目录中,然后允许对该目录的匿名访问来达个这个目的,但我觉得还是用loginUrl更优雅一些)。 接下来,我们为Login.asmx添加用于身份验证的WebMethod:
[WebMethod] public bool Check(string userName,string password) { if (userName == "aaaaaa" && password == "123456")//添加验证逻辑 { System.Web.Security.FormsAuthentication.SetAuthCookie(userName, false); return true; } else { return false; } }
最后一步工作就是:让客户程序中的WebService实例与Login实例共享CookieContainer。
class Sample { System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); public void Login() { MyServiceLogin.Login login = new App.MyServiceLogin.Login(); login.CookieContainer = cookieContainer; login.Check("aaaaaa", "123456"); } public void ShowHelloWorld() { MyService.WebService service = new App.MyService.WebService(); service.CookieContainer = cookieContainer; Console.WriteLine(service.HelloWorld()); } }

Login()以后再ShowHelloWorld(),你是否看到了我们熟悉的“Hello World”?Ok,就这么简单!

注意:System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); 为全局定义。

System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); MyService.WebService service = new App.MyService.WebService(); service.CookieContainer = cookieContainer;
分享到:
评论

相关推荐

    ASP.NET实现基于Forms认证的WebService应用实例

    在安全性要求不是很高的ASP.Net程序中,基于Forms的身份验证是经常使用的一种方式,而如果需要对WebService进行身份验证,最常用的可能是基于Soap 标头的自定义身份验证方式。如果对两者做一下比较的话,显然,基于...

    基于.net环境的WebService开发资料

    - 安全性:可以使用HTTPS协议加密传输,也可以通过.NET的认证机制实现身份验证,如基本认证、Windows集成认证或Forms认证。 - 管理:可以通过IIS(Internet Information Services)进行部署和配置,也可以使用...

    ASP.NET, ASP.NET 完全入门 (新手必读)

    ASP.NET的身份验证模型包括Windows、Forms、Passport和OAuth等,确保了用户安全。此外,ASP.NET MVC和ASP.NET Core为开发大规模、高性能的Web应用提供了新的架构选择。 通过阅读和实践这个"ASP.NET完全入门"教程,...

    webservice asp.net mvc2

    ASP.NET MVC2支持各种身份验证模式,如基本身份验证、Windows身份验证和Forms身份验证。此外,还可以使用`Authorize`特性来限制对特定Action的访问。 8. **测试Web服务**:一旦Web服务准备好,可以通过发送HTTP请求...

    ASP.NET与Web Service实例剖析中文版

    ASP.NET支持多种编程语言,如C#和VB.NET,提供了诸如ASP.NET MVC、Web Forms和Web API等多种开发模式,满足不同项目需求。 1. **ASP.NET MVC**:Model-View-Controller设计模式,鼓励分离关注点和可测试性,适合...

    Asp.Net技术学习顺序问题

    学习ASP.NET的身份验证模式,如Forms Authentication、OAuth、OpenID Connect,以及如何实现角色和权限管理。 10. **部署和持续集成**:学习如何将Asp.Net应用部署到IIS服务器,或者使用Azure等云平台。理解版本...

    基于Asp.net的旅游门户网站

    - **身份验证与授权**:使用ASP.NET的身份验证机制,如Forms Authentication,确保只有授权用户才能访问特定的后台管理功能。 - **安全性**:对敏感信息如用户密码进行加密存储,使用HTTPS协议保护数据传输安全。 - ...

    asp.net类库速查手册

    ASP.NET允许开发者自定义控件、错误处理、身份验证等,通过继承或实现特定接口来自定义类库的功能。例如,自定义控件可以继承`Control`类,而自定义错误处理可以重写`Application_Error`事件。 7. **MVC与Web ...

    【ASP.NET编程知识】ASP.NET中基于soaphead的webservice安全机制.docx

    在ASP.NET中,我们可以利用SOAP头来实现对Web服务的调用者进行身份验证,确保只有经过许可的用户或应用程序能够访问服务。 ### 服务端实现 1. **定义自定义SOAP头类**:首先,我们需要创建一个继承自`SoapHeader`...

    asp.net人事管理网站

    在ASP.NET中,可以使用内置的身份验证和授权服务,如Forms Authentication,来处理用户登录和权限控制。用户登录信息通常存储在数据库中,登录时进行身份验证,成功后生成身份令牌供后续请求使用。 Web-service...

    asp.net接口 soap接口默认带用户名和密码校验

    ASP.NET提供了多种身份验证模式,如Windows身份验证、Forms身份验证、Passport身份验证以及基本和摘要HTTP身份验证。在SOAP接口的上下文中,通常使用基本或摘要HTTP身份验证。基本身份验证简单地将用户名和密码以...

    《asp.net/xml深入编程技术》

    - **ASP.NET的安全性**:讨论了如何保护ASP.NET应用程序免受攻击,包括身份验证、授权机制等。 - **ASP.NET的缓冲机制**:解释了ASP.NET中的各种缓存技术,如页面输出缓存、数据缓存等。 此外,本书还特别关注了XML...

    ASP.NET开发实战1200例_第II卷第一章光盘内容

    7. **安全性和身份验证**:包括Windows身份验证、 Forms身份验证,以及角色管理,确保应用的安全性。 8. **MVC模式**:ASP.NET MVC框架提供了一种模型-视图-控制器的设计模式,使代码结构更清晰,便于测试和维护。 ...

    AJAX_tutorial03_MSAjax_ASP.NET_Services_cs.pdf

    本文将探讨如何实现和使用由Microsoft ASP.NET AJAX Extensions提供的ASP.NET Profiling和Forms Authentication服务。通过这些扩展,支持Forms认证变得非常简单,因为它可以通过一个WebService代理脚本来实现。此外...

    Professional ASP.NET 2.0 Special Edition

    可能的讨论点包括SOAP、WSDL和UDDI,以及如何使用ASP.NET 2.0的WebService控件。 除此之外,这本书可能还涉及了ASP.NET 2.0的配置和部署,包括Web.config文件的使用、应用程序池和IIS的配置,以及如何将网站发布到...

    李勇平ASP.NET2.0(C#)基础教程PPT(完整版).rar

    9. **安全性和身份验证**:了解ASP.NET的安全特性,如身份验证(Forms Authentication)、授权(Authorization)以及如何防止SQL注入和跨站脚本攻击。 10. **部署和调试**:学习如何将ASP.NET应用程序部署到IIS...

    北大青鸟asp.net试题

    - **Windows认证**(默认): 使用操作系统提供的身份验证机制。 - **Forms认证**:基于表单的身份验证方式。 - **Passport认证**:基于Microsoft Passport的身份验证方式。 ### 20. Code-Behind的概念 Code-Behind...

    ASP.NET无刷新聊天室

    ASP.NET的身份验证机制(如Forms Authentication)可以帮助管理用户登录状态,防止未授权访问。同时,消息传输应进行加密,例如使用HTTPS协议,以保护用户隐私。 8. **性能优化**:为了处理大量并发用户,可能需要...

    ASP.NET深入编程技术

    - **WebService**: 阐述了WebService的概念及其在ASP.NET中的实现方法,包括如何创建、发布和服务端点配置。 #### 三、ASP.NET高级特性 - **设置与跟踪**: 讲解了如何在ASP.NET应用中进行配置管理,以及如何使用...

Global site tag (gtag.js) - Google Analytics