4

我正在我的网站上创建一个插件,登录的用户可以在其中查看他们的电子邮件。我正在开发的电子邮件服务器是 Zimbra。到目前为止,我已经能够使用 PHP 的 imap_open 函数成功获取并显示用户电子邮件:

imap_open($server, $email, $password)

当用户点击网站上的电子邮件链接时,用户会被导航到 zimbra 网络客户端。但是,用户将不得不再次重新输入他们的登录凭据。我检查了浏览器的 cookie 信息,并注意到 Zimbra 在用户登录时设置了一个 cookie ZM_AUTH_TOKEN:我相信 Zimbra 使用此 cookie 来检测用户是否已经登录。本质上,我的任务是消除这个重新登录的额外步骤;如果有开源解决方案,我也想知道这些。

4

2 回答 2

2

你可以在这里查看官方文档:

http://wiki.zimbra.com/index.php?title=Preauth

于 2013-04-05T20:06:27.010 回答
0

这是一个解决方案的一半——抱歉,我从未使用 Zimbra 进行编程,但我已经多次跨 php 项目实现单点登录。

您的域和 zimbra 网络服务器的域是否相同?如果是,您可以查看和操作彼此的 cookie。尝试找到处理登录并设置 cookie 的 zimbra 代码。然后编写一个小的 Web 服务网页并将其放在调用该代码并返回 cookie 令牌的 zimbra 服务器上。然后,当用户登录时,您的网站可以在幕后对 zimbra 进行 curl,获取 cookie 的令牌内容,然后设置适当的 cookie,以便他们登录到 Zimbra。我使用只有我的插件网站知道的密码来保护 Web 服务网页。

如果它们不是同一个域,您仍然可以这样做。但是,您必须在客户端使用框架或 JavaScript,而不是通过服务器上的 curl 来执行此操作。此外,用于保护登录 Web 服务的简单密码也不起作用,因为浏览器正在访问它并且每个人都可以看到密码。您必须使密码更安全,例如使用预定义的秘密散列他们的电子邮件地址(假设在两台服务器上相同)。

于 2013-03-12T04:26:21.680 回答