更新:2007 年 11 月
本主题讨论 ASP.NET 移动页和控件的身份验证选项。它阐述了在移动设备上进行身份验证的复杂性,并讨论了以下身份验证方法:
Windows 身份验证
Passport 身份验证
Forms 身份验证
不支持 Cookie 的设备上的身份验证
Windows 身份验证
Internet 信息服务 (IIS) 与 ASP.NET 一起,可与客户端协商基于 Microsoft Windows 的身份验证。在未受保护的应用程序(身份验证设置为匿名的应用程序)中,从不考虑请求用户的标识。而是通过使用在 IIS 安装过程中设置的默认帐户执行请求。
使用 Internet 服务管理器,您可以从以下 Windows 身份验证模型中进行选择:基本、简要和集成 Windows。您可以使用 Microsoft 管理控制台的 Internet 服务管理器管理单元对这些设置进行配置。IIS 根据浏览器支持哪些身份验证方法以及为应用程序启用了哪些身份验证方法协商凭据。
基本身份验证
当今市场上的许多移动设备只支持基本身份验证。基本身份验证是受到最广泛支持的凭据交换机制,但就其本身来说并不安全,这是因为此方法不进行加密。
![]() |
---|
默认情况下,基本身份验证以明文形式传输用户名和密码。因此,建议您针对这类信息和其他敏感信息使用 HTTPS。 |
Passport 身份验证
ASP.NET 不支持将 Passport 身份验证和移动设备一起使用。
Forms 身份验证
Forms 身份验证是 .NET Framework 结构的一部分,该结构使您在没有 IIS 身份验证的情况下能够对用户进行身份验证。事件的一般顺序如下。
客户端请求某页。
如果用户未通过身份验证,浏览器会重定向到登录窗体。
客户端在回发到服务器的窗体中提供凭据。
应用程序验证该凭据。如果用户通过验证,则应用程序将 Forms 身份验证票证 (Cookie) 写入客户端并重定向到最初请求的页。
在后续请求中,将检查身份验证 Cookie,如果它有效,则直接提供请求的页。
对于某些不支持 Cookie 的设备,第 4 步将出现问题。RedirectFromLoginPage 方法将身份验证信息写入查询字符串中。为了避免每次请求时都将用户重定向到登录页,可在每个请求中将身份验证信息作为查询字符串的一部分提供。ASP.NET 提供一种方法用于在相对 URL 的查询字符串中携带这种数据。
有关如何执行 Forms 身份验证的示例,请参考 MobileFormsAuthentication 类概述。
![]() |
---|
默认情况下,Forms 身份验证以明文形式发送用户名和密码。因此,建议您针对这类信息和其他敏感信息使用 HTTPS,并在 Web.config 文件中设置 <forms> 元素的 requiresSSL 属性。如果某个设备不能直接或通过网关支持 SSL,而它尝试访问要求 SSL 的页,则将向用户显示一条错误消息。 |
不支持 Cookie 的设备上的身份验证
浏览器身份验证模型通常使用 Cookie 跟踪用户身份验证。许多移动设备不支持 Cookie,因此无法通过这种方法进行身份验证。
为尽可能广泛的一组设备提供基本身份验证对面向移动设备的开发人员来说是非常有价值的。
无 Cookie 的身份验证要求可以在另一个位置访问身份验证票。在 Forms 身份验证中,如果 Cookie 不存在,则 ASP.NET 身份验证模块将在查询字符串中检查它是否存在。您可以通过将会话 ID 包含在查询字符串中实现此操作。这要求重新编写页上的所有链接以根据以下因素有条件地包括身份验证票:
是否配置了应用程序以持久保存无 Cookie 的数据? 这是由 IPageAdapter 接口 CookielessDataDictionary 属性的设置决定的。
此设备是否需要无 Cookie 的身份验证?
说明:
您不能为无 Cookie 的身份验证配置单个设备。
若要使身份验证在无 Cookie 的设备以及 SupportsCookieWithRedirect 属性设置为 false 的设备上正常工作,必须设置 <mobileControls> 元素中的 CookielessDataDictionaryType 属性。默认情况下,CookielessDataDictionaryType 属性在 Machine.config 文件中设置为 CookielessData。若要为单个应用程序重写此行为,您必须将 CookielessDataDictionaryType 属性设置为空字符串 ("")。
请注意,某些设备和浏览器当前要求完全限定的 URL 响应 HTTP 重定向。在 Machine.config 文件或 Web.config 文件(应用程序级)的 <system.web> 元素中将 UseFullyQualifiedRedirectUrl 属性设置为 true。有关更多详细信息,请参见重定向到 ASP.NET 移动网页。
有关更多安全建议,请参见保证应用程序的安全和 ASP.NET Web 应用程序安全性。