Windows Communication Foundation 身份验证服务概述

更新:2007 年 11 月

Windows Communication Foundation (WCF) 身份验证服务使您能够使用 ASP.NET 成员资格从可以发送和使用 SOAP 消息的任何应用程序中对用户进行身份验证。这可以包括不使用 .NET Framework 的应用程序。因此,这些不同的应用程序的用户不需要对每个应用程序使用单独的凭据。用户在使用任一客户端应用程序时,均可通过提供相同的凭据登录到应用程序中。

本主题包含以下部分:

  • 方案

  • 背景

  • 代码示例

  • 类参考

方案

当需要从非 ASP.NET Web 应用程序中使用 ASP.NET 成员资格对用户进行身份验证时,可将身份验证服务作为 WCF 服务进行访问。这可以包括控制台应用程序、Windows 窗体应用程序或不是用 .NET Framework 开发的应用程序。该应用程序必须可以发送和使用 SOAP 消息。

返回页首

背景

若要使用该服务,请将用户的凭据传递给身份验证服务,该服务通过使用 ASP.NET 成员资格来验证凭据。默认情况下,身份验证服务通过将用户名和密码传递给默认的成员资格提供程序来对它们进行验证。

在对用户进行身份验证之后,ASP.NET 身份验证服务会以 HTTP Cookie 的形式发出一个身份验证票证,该 HTTP Cookie 与 ASP.NET Forms 身份验证兼容。在后续请求中,该票证将被传递给 Web 应用程序,这样用户就不用每次都提供凭据了。

身份验证服务不支持将身份验证票证嵌入到 URL 中。因此,必须在客户端启用 Cookie 以保留身份验证票证。

为安全起见,客户端应用程序应始终通过安全套接字层(SSL,使用 HTTPS 协议)来访问身份验证服务。有关如何设置 SSL 的更多信息,请参见位于 Microsoft 网站上的 Configuring Secure Sockets Layer (IIS 6.0 Operations Guide)(配置安全套接字层(IIS 6.0 操作指南))和 Configuring Secure Sockets Layer in IIS 7.0(在 IIS 7.0 中配置安全套接字层)。

使用自定义凭据进行身份验证

当需要使用除用户名和密码之外的信息(例如标识号)验证用户时,可以在身份验证请求中添加自定义凭据。若要包含用于身份验证的其他信息,当调用身份验证服务的 Login 方法时,请在 CustomCredential 参数中传递自定义凭据。然后为 Authenticating 事件创建事件处理程序。在此处理程序中,可以读取这些凭据并自己验证它们。有关更多信息,请参见 如何:在使用 WCF 身份验证服务时自定义用户登录

使用自定义成员资格提供程序进行身份验证

通过为 Authenticating 事件创建事件处理程序,可以使用非默认的成员资格提供程序来验证用户名和密码。然后将用户名和密码传递给自定义成员资格提供程序的 ValidateUser 方法。有关更多信息,请参见 如何:对 WCF 身份验证服务使用非默认成员资格提供程序

可以保留非敏感的用户信息作为身份验证票证的一部分。例如,可以在票证中存储用户喜爱的颜色(如果以后要检索此信息)。若要自定义身份验证 Cookie,请为身份验证服务的 CreatingCookie 事件创建事件提供程序,然后将用户数据存储在 FormsAuthenticationTicket 对象的 UserData 属性中。有关更多信息,请参见 如何:通过 WCF 身份验证服务自定义身份验证 Cookie

Bb386582.alert_note(zh-cn,VS.90).gif说明:

永远不要将用户的密码或其他敏感数据存储在票证中。

返回页首

代码示例

演练:使用 ASP.NET 应用程序服务

如何:启用 WCF 身份验证服务

如何:在使用 WCF 身份验证服务时自定义用户登录

如何:对 WCF 身份验证服务使用非默认成员资格提供程序

如何:通过 WCF 身份验证服务自定义身份验证 Cookie

返回页首

类参考

下表列出了 WCF 身份验证应用程序服务的关键服务器类。

返回页首

请参见

任务

演练:使用 ASP.NET 应用程序服务

概念

成员资格介绍