如果cookie存在,即使它是在另一个应用程序中创建的,如何检查? (使用JS或C#)
我有几个应用程序,其中一个是管理身份validation的中央应用程序,其中LogOn
页面作为IFrame
导入到其他应用程序。
当userName
和password
正确时,我创建一个名为userInfo
的cookie。
现在,在当前的应用程序中,我想检查userInfo
的cookie是否存在。 我想我应该检查它是否存在于浏览器中(在客户端)。
它必须是可能的,所以我该怎么办呢?
提前致谢。
Cookie不能跨域共享。 如果您的应用程序未托管在同一个域中,则必须忘记这一点。 它不起作用,因为浏览器(出于明显的安全原因)不会跨域发送cookie。 还有其他方法可以实现跨域单点登录(请参阅我的答案的第二部分)。
现在让我们假设您的应用程序位于同一个域中,并且您有多个应用程序分布在根域的不同子域中:
并且您希望在这些子域之间共享身份validation。 您所要做的就是指定将web.config中的domain
属性设置为根域:
应将相同的配置应用于所有应用程序的web.config
。 这就是你需要做的全部事情。 一旦用户在其中一个子域上进行身份validation,由于cookie可以跨子域共享,因此他将自动在其他子域上进行身份validation。
如果您想实现跨域单点登录,那么您将不得不采取不同的方法。 您可以在不同的应用程序之间使用相同的机器密钥来加密身份validation令牌。 以下是步骤:
- 用户导航到
https://foo.com
并显示登录屏幕,因为他尚未在此域上进行身份validation。 - 用户进行身份validation并发出身份validationcookie并对
foo.com
域有效。 -
现在,用户需要访问
https://bar.com
并在此域上自动进行身份validation。 在https://foo.com
上的某个页面上,您可以创建一个包含要发布的身份validationcookie值的表单: - 用户将身份validationcookie提交给
bar.com
。 接收此表单提交的脚本将读取已发布的身份validation令牌值,并使用FormsAuthentication.Decrypt
方法解密身份validation票证并读取用户名。 由于foo.com
和bar.com
上的两个应用程序bar.com
使用相同的机器密钥,因此在foo.com上加密的故障单将由bar.com成功解密。 -
bar.com
上的脚本从令牌中提取了经过身份validation的用户名,它使用FormsAuthentication.SetAuthCookie
方法在bar.com
上发出有效的表单身份validationcookie。 - 用户现在在
bar.com
身份validation
此模型的整体安全性依赖于在将表单身份validation令牌从foo.com
到bar.com
时使用SSL的事实,因此bar.com
无法捕获令牌,并且两个应用程序共享相同的令牌用于加密和解密这些令牌的机器密钥。
上述就是C#学习教程:如果cookie存在,即使它是在另一个应用程序中创建的,如何检查? (使用JS或C#)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987263.html