Php 以编程方式登录Zimbra

Php 以编程方式登录Zimbra,php,security,email,web,zimbra,Php,Security,Email,Web,Zimbra,我正在我的网站上创建一个插件,在那里登录的用户可以查看他们的电子邮件。我开发的电子邮件服务器是Zimbra。到目前为止,我已经能够使用PHP的imap_open函数成功获取和显示用户电子邮件: imap_open($server, $email, $password) 当用户单击网站上的电子邮件链接时,用户将被导航到zimbra web客户端。但是,用户必须再次输入其登录凭据。我检查了浏览器的cookie信息,注意到Zimbra在用户登录时设置了一个cookie,ZM_AUTH_TOKEN:我

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

imap_open($server, $email, $password)

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

这是解决方案的一半——很抱歉,我从未使用Zimbra编程,但我已经在php项目中实现了多次单点登录

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


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

您可以在此处查看官方文档:


@leftclickben你能发布你的答案吗?这样我就可以把它标为最佳答案了?谢谢。按问题评论中的要求作为答案发布:-)