我有一个使用表单身份验证的网站,但是我试图了解使用的URL不包含域名时会发生什么。
[如果转到https://<machinename>.<domain_name>:57850
,则进入登录屏幕并登录,可以使用浏览器中相同标签或新标签使用网站上的任何页面,但是如果我打开一个新标签并尝试了[ C0]我未通过身份验证,并进入登录屏幕。
这是正常行为吗?我可以使用“表单身份验证”来做些什么,使我可以在使用/不使用URL中的域名(可能是web.config设置)之间进行交换吗?
我甚至都在努力为这个问题定义正确的用语,这就是为什么我认为我没有找到任何有用的术语来描述这一问题。
希望有人可以给我一些指导。
谢谢
通常,https://<machinename>:57850
依赖Cookie。 Cookies与域绑定。它们可以绑定到根域,因此,例如,与example.com绑定的cookie可以在a.example.com和b.example.com上运行,但永远不能跨域。就您的浏览器而言,Form Authentication与<machinename>.<domain_name>
不同,因此不会提供来自先前域的cookie。否则,仅通过从其他站点请求cookie来窃取登录名将非常容易。
[<machinename>
选项,在一个域上登录将使您在另一域上登录,但是您的应用程序的安全性将大大降低,尤其是在防止重放攻击的情况下,URL将会变得非常丑陋(因为它取代了Cookie)。
另一方面,您的应用程序并不真正在乎您使用哪个域来访问它。即使使用cookie,也可以通过Cookieless,<machinename>.<domain_name>
甚至<machinename>
访问。每个域只有一个Cookie,但是登录后就可以进入。