信息: 帮助使用安全套接字层 (SSL) 安全窗体身份验证

文章翻译 文章翻译
文章编号: 813829 - 查看本文应用于的产品
下面的 Microsoft.net 框架类库命名空间引用这篇文章:
  • System.Web.Security
展开全部 | 关闭全部

本文内容

概要

默认状态下,包含窗体身份验证票证的 cookie 不安全时 Microsoft ASP.NET Web 应用程序中使用 forms 身份验证。本文介绍如何通过使用安全套接字层 (SSL) 来帮助安全窗体身份验证。本文还介绍了其他实现选项和替代方法来帮助安全窗体身份验证。

更多信息

基于窗体的身份验证是一种 ASP.NET 身份验证服务,允许应用程序提供他们自己登录界面,并执行自定义的凭据验证。窗体的身份验证与 ASP.NET 对用户进行身份验证,然后将未经身份验证的用户重定向到登录页的该 <forms>loginUrl 属性指定的 Web.config 文件中的元素。当您提供凭据通过登录窗体时, 应用程序验证该的请求,然后系统会发出一个 cookie 的窗体中的 FormsAuthenticationTicket 类。作为响应后续 cookie 传递 FormsAuthenticationTicket 类 Web 来自已通过身份验证的客户端的请求。

尽管窗体身份验证提供了一种灵活的方法的身份验证,必须仔细考虑一些重要的问题,当您来保护 ASP.NET 应用程序。您必须帮助保护通过使用 SSL,因为将凭据发送到服务器以纯文本的格式的初始登录凭据。您还必须确保您帮助保护包含窗体身份验证票证的 cookie。若要这样做请所有页上使用 SSL 来帮助保护该票证。或者,您可以通过设置 保护 属性,该 <forms>的加密表单身份验证票证 元素为 全部 或以在 Web.config 文件和使用 FormsAuthentication加密 方法 加密 类来加密票证。FormsAuthentication 类的 加密 方法的详细信息,请参阅在""这篇文章部分。

表单身份验证的优点

  • 如 Microsoft SQL Server 数据库或 Active Directory 窗体身份验证支持身份验证自定义数据存储目录服务。有关详细的信息,请参阅本文"REFERENCES"一节。
  • 窗体身份验证支持与数据存储区中数据的角色查找基于角色的授权。
  • 与 Web 窗体身份验证顺利地集成的用户界面。有关详细的信息,请参阅本文"REFERENCES"一节。
  • ASP.NET 提供了很多基础结构。相对较少的代码,则需要与 Microsoft 活动服务器页面版本 3.0 版及更早的版本相比
  • ASP.NET forms 身份验证不需要 Microsoft Internet Explorer。窗体身份验证支持一个宽的范围内的 Web 浏览器客户端。

如何帮助创建窗体身份验证安全

  • 使用 SSL 的所有页。
  • 使用 FormsAuthentication 类的 加密 方法。

对所有网页使用 SSL

帮助确保以帮助安全的安全访问的所有网页使用 SSL 加密的身份验证 cookie 保持整个客户端浏览器会话安全。通过在应用程序上使用 SSL 加密,有助于防止任何人都从危害,身份验证 cookie 和传输其他有价值的信息。

在 Web.config 文件中,requireSSL 属性的值设置为 true。这将使 SSL 在 $ 位置中,cookie 发送回浏览器时。如果您没有设置为 truerequireSSL 值,在窗体,将引发异常,或与该 cookie 不验证身份。

requireSSL 设置为 true 时,加密的连接有助于保护用户的凭据,ASP.NET 将为身份验证 cookie HttpCookie.Secure 属性设置。兼容的浏览器不会返回 cookie,除非该连接使用 SSL。下面的示例演示如何执行此操作为您的应用程序的 Web.config 文件中:
 <configuration>
 <system.web>
   <authentication mode="Forms">
     <forms name=".ASPXAUTH"
       loginUrl="login.aspx" 
       protection="All"
       timeout="20"
       requireSSL="true">
     </forms>
   </authentication > 
   <authorization>
     <deny users="?" />
   </authorization>
 </system.web>
</configuration>
如果 cookie 被设置为安全地传输,下面的示例将执行操作:

visual C#.net 代码
 string cookieName = FormsAuthentication.FormsCookieName.ToString(); 
 HttpCookie MyCookie = Context.Request.Cookies[cookieName];

 if (MyCookie.Secure)
 {
      Response.Write("The cookie is secure with SSL.");
      // Add other required code here.
 } 

Visual Basic.net 代码
   Dim cookieName As String = FormsAuthentication.FormsCookieName.ToString
   Dim MyCookie As HttpCookie = Context.Request.Cookies(cookieName)
   If MyCookie.Secure Then
      Response.Write("The cookie is secure with SSL.")
      ' Add other required code here.
   End If

使用该加密 FormsAuthentication 类的方法

如果您仅使用 SSL 在初始登录 Web 页上加密传递身份验证的凭据,请确保在 cookie 中包含的窗体身份验证票受保护。必须保护窗体身份验证票证,因为该 cookie 在客户端和服务器之间传递对每个后续的 Web 请求。若要对窗体身份验证票证配置该 <forms>的 保护 属性 元素,和使用 FormsAuthentication加密 方法加密票证的类。
<authentication mode="Forms">
  <forms name="MyAppFormsAuth"
       loginUrl="login.aspx"
       protection="All"
       timeout="20" 
       path="/" >
  </forms>
</authentication> 
因为 保护 属性设置为 所有,当应用程序调用 FormsAuthentication.Encrypt 方法时,票证必须验证和加密。

在创建窗体身份验证票时,请调用 加密 方法。您通常创建在应用程序的 登录 事件处理程序中的票证。

visual C#.net 代码
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
Visual Basic.net 代码
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket)

参考

有关 ASP.NET 和窗体的身份验证的信息,请访问以下 Microsoft 网站:
在 ASP.NET 中的身份验证:.net 安全指南
http://msdn2.microsoft.com/en-us/library/ms978378.aspx
窗体身份验证提供程序
http://msdn2.microsoft.com/en-us/library/9wff0kyh(vs.71).aspx
有关使用 SSL 来保护窗体身份验证的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306590信息: ASP.NET 安全性概述
315588如何: 安全的 ASP.NET 应用程序使用客户端证书
313116PRB: Forms 身份验证请求是否不定向到 loginUrl 页面
324069如何: 设置在 IIS 中的 HTTPS 服务
326340AD 中的如何: 使用窗体身份验证和 Visual Basic.net 对 Active Directory 身份验证
301240SQL 中的如何: 实现基于表单的身份验证,在 ASP.NET 应用程序通过使用 C#.net
308157SQL 中的如何: 实现在 ASP.NET 应用程序使用 Visual Basic.net 中的基于表单的身份验证
311495如何: 实现基于角色的安全性与您的 ASP.NET 中的基于表单的身份验证使用 Visual C#.net 的应用程序
306238如何: 实现基于角色的安全的 ASP.NET 应用程序使用 Visual Basic.net 中的基于表单的身份验证
312906如何: 以用于表单的身份验证使用 Visual C#.net 创建密钥
313091如何: 用于在窗体中使用 Visual Basic.net 创建密钥身份验证

属性

文章编号: 813829 - 最后修改: 2007年4月19日 - 修订: 2.5
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
关键字:?
kbmt kbcookie kbwebforms kbauthentication kbsecurity kbconfig kbinfo KB813829 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 813829
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com