跨安全和非安全共享身份验证

Wad*_*e73 5 asp.net webforms

我正处于我正在处理的网站的情况下,经理希望允许用户登录,如果他们通过http或https登录则不用担心.基于另一个SO问题(如何在http和https之间共享一个asp.net会话)我认为如果我在cookie上设置secure = false,这将是可能的.为此,我们使用子域作为站点的安全部分.因此,对于http,我们使用site.com,而https使用secure.site.com.所以我尝试在web.config中设置域以进行身份​​验证.

<authentication mode="Forms">   
  <forms loginUrl="/account/login"
    protection="All" timeout="30" name=".ASPXAUTH" path="/"
    requireSSL="false" slidingExpiration="true" defaultUrl="/"
    cookieless="UseDeviceProfile" domain="site.com"
    enableCrossAppRedirects="false" /> 
</authentication>
Run Code Online (Sandbox Code Playgroud)

我做错了吗?我知道存在一些安全问题,我会在提出请求时解决这些问题.我只想让用户登录一次,并通过http和https记住.谢谢.

Ond*_*dar 2

我认为您的 web.config 中有错误的域。你应该将其更改为

domain=".site.com"
Run Code Online (Sandbox Code Playgroud)

例如,您允许表单身份验证 cookie 同时存在于 ssl.site.com 和 no-ssl.site.com 域上。

话虽这么说,任何类型的安全性都以 https:// 开头,覆盖您的所有解决方案 - 否则您很容易遭受中间人攻击(Web 代理可以将不适当的内容注入您的解决方案,他们可以窃取您的授权 cookie并在https://ssl.site.com等流程中使用它。