了解窗体的身份验证票证和 Cookie

文章翻译 文章翻译
文章编号: 910443 - 查看本文应用于的产品
ASP.NET 支持语音列

了解窗体的身份验证票证和 Cookie

要自定义此列设置为您的需要,我们想要邀请您提交您的想法有关您和您想要查看的问题感兴趣的主题在将来解决知识文库文章和 Support Voice 专栏。您可以提交您的意见和反馈使用 诚征意见 表单。也是一个链接到该窗体,在此列的底部。
展开全部 | 关闭全部

本文内容

简介

欢迎使用 Microsoft ASP.NET 支持语音列!我将 Nilay B.Shah 与 ASP.NET 开发人员支持团队。我一直在使用 ASP.NET 支持一个半年以上。窗体身份验证实际上是一种很酷的身份验证功能。这篇文章讲述了一些用户发现使用 forms 身份验证,如 forms 身份验证票证和窗体身份验证 cookie 和其相关设置的关系令人困惑的问题。我想感谢 Jerry Orman,技术负责人的 ASP.NET 支持团队,他令人难以置信的帮助 !

因为它们密切相关,人们有时会想知道有关窗体的身份验证"票"和"cookie"。我有遇到过这样的问题: 任何人都可以解释 cookie 过期票证到期日期之间的差异吗?Cookie 过期后,用户将被重定向到登录页。票证过期时,该如何处理?它也会使该 cookie 过期吗?SlidingUpdate 实际更新内容?

我将着重在这篇文章,可以回答以下问题的窗体身份验证这两个方面:
  • 什么是窗体身份验证票证和 formsauthentication cookie?它们如何相互关联?
  • FormsAuthentication 中的作用是票证的什么?
  • 有 cookie 的过期时间和存储票证 expirationrelated?
  • 如何执行 formsauthentication 票的上下文中的可调过期工作和 forms 身份验证 cookie?
  • 在设置窗体 authenticationcookie 和 forms 身份验证票证超时属性?
  • 方案问题: 窗体身份验证可能时间家族在 configurationfile 中设置的超时属性值

Forms 身份验证票证和窗体身份验证 cookie 是什么?Arethey 如何相关的信息?

窗体身份验证 cookie 是船体身份验证票证的容器。票据作为随每个请求的窗体身份验证 cookie 值传递,forms 身份验证,在服务器上,用于标识已通过身份验证的用户。

但是,如果我们选择使用无 cookie 的窗体身份验证,该票证将以加密格式的 URL 中传递。因为客户端浏览器有时会阻止 cookie,则使用无 cookie 的窗体身份验证。在 Microsoft.NET Framework 2.0 中引入此功能。

有关详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点:
http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx

扮演何种角色的票证通知身份验证?

Forms 身份验证票证用于通知您的身份的 ASP.NET 应用程序。因此,票据是安全性的构建基块的窗体身份验证。

票据进行加密和签名使用<machineKey></machineKey>服务器的 Machine.config 文件中的配置元素。ASP.NET 2.0 中使用decryptionKey和新解密特性的<machineKey></machineKey>元素进行加密的 forms 身份验证票据。解密属性允许您指定要使用的加密算法。ASP.NET 1.1 和 1.0 使用 3DES 加密技术,这是不可配置的。篡改的票值取决于无法解密服务器的票证。结果是,用户被重定向到登录页。

如果在 Web 场中部署应用程序时,必须确保每个服务器上的配置文件共享中的validationKeydecryptionKey属性的相同值<machineKey></machineKey>标记,它适用于哈希算法和解密票证的分别。因为不能保证哪台服务器处理后续请求时,必须执行此操作。有关FormsAuthenticationTicket加密和 Web 场部署考虑事项的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/ms998288.aspx
在下面的 Microsoft 知识库文章中可以找到演练一下要手动生成密钥的方法:
312906 如何创建使用 Visual C#.NET 在 Forms 身份验证中使用的键
313091 如何通过使用窗体身份验证中使用 Visual Basic.NET 创建密钥
通过使用FormsAuthenticationTicket类,可以手动生成窗体身份验证票证。有关详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

Cookie 过期和票证到期日期相关的方式?

对于这种非永久性的 cookie,如果票证已过期,cookie 也将到期,并且用户将被重定向到登录页。在另一面,如果票证标记为持久的其中 cookie 存储在客户端中,浏览器可以使用相同的身份验证 cookie 来登录到 Web 站点的任何时间。但是,我们可以使用FormsAuthentication.SignOut方法来删除永久或非永久性的 cookie 明确。

有关FormsAuthentication.SignOut方法的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx
使用无 cookie 的窗体身份验证中,浏览器关闭时,如果票据是丢失和新票证时将要生成的下一个请求。

如何在上下文 offorms 身份验证票证的可调过期工作和 forms 身份验证 cookie?

可调过期的工作方式完全相同!

让我们以一个示例: 如果下午 5 点访问登录页时 00:00:00 PM,它的过期时间,在 5:10:00: 00:00超时属性是否 10 和slidingExpiration属性设置为 TRUE。现在,如果在 5:05 再次浏览任何网页 00:00:00 PM,cookie 和票证超时期限将重置为 5:15:00: 00:00。

注意如果一半到期时间过去之前访问该 Web 页时,将不重置票证过期时间。前景色的示例中,如果任何 Web 页访问再次在 5:04 00:00:00 PM,将不重置的 cookie 和票证超时时间。

有关详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/1d3t3c61 (vs.71).aspx

其中设置的窗体身份验证 cookieand forms 身份验证票证超时值?

唯一可以进行的设置是在 Web.config 文件或 Machine.config 文件中,在<forms></forms>标记。该更改会确定窗体身份验证的上下文中的票证或 cookie 的超时时间,除非手动生成该票证。

<!--
forms Attributes: 
name="[cookie name]" - Sets the name of the cookie used for Forms Authentication.
loginUrl="[url]" - Sets the URL to redirect client to for authentication.
protection="[All|None|Encryption|Validation]" - Sets the protection mode for data in cookie.
timeout="[minutes]" - Sets the duration of time for cookie to be valid (reset on each request).
path="/" - Sets the path for the cookie.
requireSSL="[true|false]" - Should the forms authentication cookie be sent only over SSL?
slidingExpiration="[true|false]" - Should the forms authentication cookie and ticket be reissued if they are about to expire?
-->
有关详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspx
如果使用FormsAuthenticationTicket类手动生成该票证,可以通过过期时间属性中设置超时。此值将重写配置文件中指定的超时属性值。

有关FormsAuthenticationTicket的成员的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx

方案问题: 窗体身份验证可能会在配置文件中设置的超时属性值之前的超时

如果手动生成的窗体身份验证票证,该票证的超时属性将重写在配置文件中设置的值。因此,如果该值小于配置文件中的值,则窗体身份验证票证过期之前的配置文件超时属性值,反之亦然。例如,让我们假定,<forms></forms>在 Web.config 文件中的超时属性设置为 30 和票据的到期值设置为 20 分钟。在这种情况下,forms 身份验证票证过期后 20 分钟内,用户必须登录后,再次的。

相关的链接

910439 解决窗体身份验证
891032 ASP.NET 的疑难解答
301240 如何通过使用 C#.NET ASP.NET 应用程序中实现基于窗体的身份验证
308157 如何通过使用 Visual Basic.NET ASP.NET 应用程序中实现基于窗体的身份验证
我希望能找到此信息有助于减轻一些涉及使用 ASP.NET forms 身份验证票证和 cookie 的混乱。请记住,Support Voice 专栏为您!一直以来,尽情地提交有关的主题的意见要在将来解决列,或者在 Microsoft 知识库文章中使用 诚征意见 表单。

属性

文章编号: 910443 - 最后修改: 2013年9月21日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
关键字:?
kbhowto kbasp kbmt KB910443 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 910443
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