.NET 使用身份验证模式的“安全”cookie = 无
Posted
技术标签:
【中文标题】.NET 使用身份验证模式的“安全”cookie = 无【英文标题】:.NET 'secure' cookies using authentication mode = none 【发布时间】:2014-07-31 07:04:25 【问题描述】:在我的 web.config (IIS6.1 asp.net 4.0) 中:
<system.web>
<authentication mode="None"/>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
</system.web>
使用 https 浏览到 localhost/任何东西都可以正常工作。所有请求都成功完成。我的问题是我得到的 cookie 没有设置“安全”标志。 HTTP 标志已设置。
如何获得安全标志?我的 IPrincipal 实现?
谢谢。
【问题讨论】:
看看这个链接***.com/questions/5978667/… 【参考方案1】:检查Forms Authentication web.config 元素是否也将requireSSL
设置为true
,因为该设置会覆盖System.Web httpCookies 元素设置并默认为false
。
【讨论】:
不在解决方案中的任何地方使用表单身份验证。谢谢。 这主要是答案。 requireSSL 确实是造成这种情况的原因,但该设置已移至 sso.config 文件中 - 所以当我将其放入 web.config 时,sso.config 将其覆盖。【参考方案2】:设置此属性会从服务器客户端发送“安全”属性,表明客户端只有在使用 SSL 连接时才能将其发回。
简而言之,您可以通过在 SSL 上运行 ASP.NET 应用程序来测试这一点。一种简单的方法是在 Visual Studio > 属性中选择您的 Web 项目 > 将 SSL 启用 设置为 true。
此外,OWASP 有一个不错的article about testing for cookies attributes。在文章中,前面提到的安全属性是可以理解的:
Secure - 此属性告诉浏览器仅在请求通过 HTTPS 等安全通道发送时才发送 cookie。这将有助于保护 cookie 不被未加密的请求传递。如果应用程序可以通过 HTTP 和 HTTPS 访问,那么 cookie 就有可能以明文形式发送。
【讨论】:
感谢您提供有关测试的链接!很好地概述了设置“安全”标志所需的设置。【参考方案3】:找到了——确实是导致这种情况的 requireSSL 属性。然而,它是在应用程序的其他地方设置的(在一个 sso.config 文件中 - 它被设置为 false 并覆盖了我在 web.config 中放置的任何内容)。
【讨论】:
以上是关于.NET 使用身份验证模式的“安全”cookie = 无的主要内容,如果未能解决你的问题,请参考以下文章
.Net SignalR 在还配置了 Cookie 身份验证时使用 JWT 承载身份验证
如何在 ASP.Net MVC 应用程序中使用来自 WCF 身份验证服务的身份验证 cookie