这是我的问题的快速版本:
当 cookie 用于不同的服务器(在本例中为 Exchange 邮件服务器)时,是否可以以某种方式将 cookie 设置到客户端的浏览器中?在这种情况下,尝试设置 cookie 的服务器位于“intranet.myschool.edu”,交换服务器位于“owa_server.myschool.edu”。
这是完整的问题:
我有一个 php 脚本,它使用 cURL 向启用了基于表单的身份验证的 Exchange 服务器进行 HTTP POST。
当我成功进行 HTTP POST(其中包括发布的 url 中的用户/密码)时,Exchange Server(或更具体地说,是https://my.school.edu/exchweb/bin/auth/owaauth.dll文件)输出 cookie。具体来说,它输出一个“sessionid”和一个“cadata”id。
将这些 cookie id 写入服务器上的文本文件后,cURL/PHP 可以引用它,然后从 Exchange/OWA 服务器请求数据(通过 webdav 等)。
那部分有效。我想解决的问题是现在将 cookie id 传递给客户端浏览器,以便他们可以使用这些 cookie id 自动登录到他们自己的 OWA 帐户。
本质上,我希望我们的用户使用他们的 Active Directory ID 登录我们的 Intranet,并查看他们最近电子邮件的快照。然后,如果他们需要,我会给他们一个小链接以切换到完整的 OWA Web 应用程序。发生此切换时,我不希望他们必须手动登录 OWA。由于他们已经在 Intranet 前面提交了他们的 Active Directory 用户名和密码,我希望他们能够自动登录到 OWA。
我应该注意,使用 Windows 身份验证尝试进行单点登录是不可能的,因为我们混合了 Mac OS、Windows 和 Linux。
我原以为我可以做一个“setcookie”并分配 cURL 获得的 cookie id 并将它们放入客户端浏览器中。
这不可能吗?是否不可能以这种方式“欺骗”Exchange/OWA(或任何其他站点)。我有 cURL 捕获的合法 cookie id。有没有办法将这些传递给另一台计算机上的客户端浏览器?
在最坏的情况下,使用 Javascript 将用户名和密码自动粘贴到 OWA 登录页面是我唯一的希望吗?有人对如何避免 Exchange/OWA 的双重登录问题有任何其他想法吗?
感谢您提供的任何帮助!