WCF身份验证服务

Windows Communication Foundation (WCF) 身份验证服务使你能够使用ASP.NET成员资格,从可以发送和使用SOAP消息的任何应用程序中对用户进行身份验证。这可以包括不使用.NET Framework的应用程序。因此,这些不同的应用程序的用户不需要对每个应用程序使用单独的凭据。用户在使用任意客户端应用程序时,均可通过提供相同的凭据登录到应用程序中。本节就使用WCF身份验证服务的几个关键点做实践性分析。
创建WCF身份验证服务

System.Web.ApplicationServices.AuthenticationService是.NET提供的默认身份验证服务类。AuthenticationService类包含只应通过WCF服务访问的四个方法:IsLoggedIn、Login、Logout和 ValidateUser方法。若要调用这些方法,请启用Web服务器上的身份验证服务,然后将WCF兼容的客户端应用程序连接到Web服务。

若要使用户登录,请将用户凭据传递给Login方法。如果凭据有效,AuthenticationService类创建一个身份验证Cookie;如果身份验证Cookie尚未过期,并且知道该用户的凭据已经过身份验证,则不必再次验证凭据。

注意 不能通过AuthenticationService类使用无Cookie身份验证。

AuthenticationService可引发两个事件:Authenticating和CreatingCookie。当验证用户凭据时发生Authenticating事件。为Authenticating事件创建一个事件处理程序以自定义如何验证用户凭据。在验证完用户凭据后设置身份验证Cookie时发生CreatingCookie事件。为CreatingCookie事件创建一个事件处理程序以自定义身份验证Cookie。

ValidateUser方法检查用于身份验证的用户凭据,但该方法不返回身份验证票证。当用户先前已登录且必须检查凭据在新的应用程序会话开始时是否仍然有效时,请使用ValidateUser方法。

现在新建一个.svc文件,如果使用默认的System.Web.ApplicationServices.AuthenticationService类提供成员资格验证服务,可以删除默认生成的接口文件和类文件,然后修改.svc文件,修改后的内容如下所示:

<%@ ServiceHost Language="C#"

Service="System.Web.ApplicationServices.ProfileService"

%>

如果要实现自定义的成员资格服务,只需要为Authenticating事件创建一个事件处理程序即可。

首先,创建如代码清单10-28所示的Authenticating事件处理程序。

代码清单10-28  Authenticating事件处理程序

void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e)

{

    if (e.UserName.IndexOf("@xuanhun.com") >= 0)

    {

        e.Authenticated = Membership.Providers["xuanhunSqlProvider"].ValidateUser(e.UserName, e.Password);

    }

    elseif (e.UserName.IndexOf("@xuanbing.com") >= 0)

    {

        e.Authenticated = Membership.Providers["xuanbingSqlProvider"].ValidateUser(e.UserName, e.Password);

    }

    else

    {

        e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);

    }

    e.AuthenticationIsComplete = true;

}

以上代码所示的Authenticating事件处理程序中,使用三个成员资格提供程序来验证用户,分别是自定义的xuanbingSqlProvider、xuanhunSqlProvider和配置文件中配置的默认的成员资格提供程序。验证之后设置当前用户的验证状态。

在编写完Authenticating事件处理程序后,需要在Global.asax文件的Application_Start方法中绑定Authenticating事件的处理程序。代码如下所示:

void Application_Start(object sender, EventArgs e)

{

    System.Web.ApplicationServices.AuthenticationService.Authenticating +=

        new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating);

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索身份验证
, 验证
, 程序
, 应用程序
, 事件
, 用户
, authentication
身份
wcf身份验证、wcf 身份验证和授权、wcf 自定义身份验证、wcf http 身份验证、无法验证服务器身份,以便于您获取更多的相关知识。

时间: 2024-10-04 12:20:44

WCF身份验证服务的相关文章

单一登录: Active Directory联合身份验证服务开发简介

本文讨论: 什么是联合身份验证 使用 ADFS 在 ASP.NET 应用程序中实现联合身份验证 信任关系和安全性注意事项 本文使用了以下技术: ADFS 和 ASP.NET Active Directory 联合身份验证服务 (ADFS) 是 Windows Server 2003 R2 最重要的组件之一.ADFS 能够 解决很多问题,而其中最显而易见的就是企业到企业的自动化控制问题.在这篇文章中,我将从一个开发 人员的角度来分析 ADFS,我们假设这个开发人员正在构建一个 Web 应用程序,而

[学习日记]对SOAP头内添加信息的验证,可实现对请求WEB服务进行身份验证。

首先,当然是发送的SOAP头里添加信息的方法了,前面有过记录,这里就不再写了可参见[学习日记]对SOAP请求的头添加内容的方法 那么这次向头内添加的信息为: dim proxy as GetHttpHeadersProxy=new GetHttpHeadersProxyproxy.AddHttpHeader("name","aowind")proxy.AddHttpHeader("pwd","123456") 接下来就是WEB

wcf-WCF 身份验证问题 怎样往客户端加Cookie

问题描述 WCF 身份验证问题 怎样往客户端加Cookie WCF服务使用了ASP.NET的Forms身份验证,也就是重定向到一登录页面.WCF客户端(Winform)有办法直接验证吗?还有就是想POST模拟登录,然后把cookie信息附加到WCF调用请求中,但不知道怎么处理.怎么才能往WCF客户端调用的请求里添加呢?

ASP .NET 中的身份验证:.NET 安全性指导

安全|安全性 摘要本文讨论了设计服务器应用程序时考虑安全性的重要性.Internet Information Services 和 ASP .NET 均提供了安全模型,以便您对用户进行适当的身份验证,并在应用程序中获得正确的安全环境. -------------------------------------------------------------------------------- 目录简介安全性考虑IIS 和 ASP .NET 之间的关系身份验证方法Web 服务的安全性代码访问安全

WIF基本原理(4)联合身份验证实例

联合身份验证实例 本实例要实现合作伙伴员工通过单一登录来尝试访问其他合作伙伴域中的资源.联合身份验证方案中有三个主要角色:标识提供方.声明提供方和信赖方.WIF会提供API 来构建所有这三个角色. 图15-11说明了典型的联合身份验证方案.在此方案中,Fabrikam员工希望无需重新登录即可访问Contoso.com 资源,也就是使用单一登录. 图15-11 联合身份验证 参与此方案的虚构用户包括: q  Frank:希望访问Contoso资源的Fabrikam员工. q  Daniel:在应用

IBM Java Toolbox for i实现三种基于IBM i的身份验证策略

对于从事IBM i平台的应用开发者而言,用户身份验证是保证程序安全性的最基本功能之一.作为访问与操 纵IBM i平台上数据与资源的Java API,IBM Java Toolbox for i从编程的角度,实现了各种用户身份验证策 略,可简单.高效地解决程序的安全性问题.本文将从Web应用的角度,结合具体样例,指导IBM i Web应用程 序开发者如何使用IBM Java Toolbox for i实现不同的身份验证策略.有关IBM Java Toolbox for i的基础知 识,请参见另一篇

谈谈Asp.net身份验证、授权

1.Asp.net是依存于IIS的一个服务,说到Asp.net的安全相关的话题当然要有一个整体上的思路:IIS接收->IIS验证->IIS授权--->ASP.net验证--->Asp.net授权--->资源返回给用户 IIS从网络上接收到一个HTTP WEB请求可以使用SSL技术来保证服务器的身份,此外SSL也可以提供一个安全通道来保护客户端和服务器端的机密数据的传送.IIS使用基本 摘要式 或者其它的方式验证用户,如果网站中的大部分内容不需要验证就可以设定为匿名验证.验证之

wcf-WCF 身份验证问题,当服务器 上运行客户端程序时 会出现验证失败的结果

问题描述 WCF 身份验证问题,当服务器 上运行客户端程序时 会出现验证失败的结果 服务器端 身份验证设置的是 只启用Windows身份验证,设置好登录名,密码,域等信息, 现在一段测试程序连接WCF地址,访问密码.用户名.域都配置正确,配置文件设置验证如下: 在本机上运行,一切正常,能够访问数据库等等一切操作,但是如果将程序放到服务器上(这个服务器就是搭建WCF 的服务器),运行就会爆验证不通过的错,报错如下:System.ServiceModel.Security.MessageSecuri

也谈ASP.NET 中的身份验证

一.配置安全身份验证模式 在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户. <authentication mode="[Windows|Forms|Passport|None]"><forms>...</forms><passport/></authentication> <authentication> 节