我正在我的网站上创建一个插件,登录的用户可以在其中查看他们的电子邮件。我正在开发的电子邮件服务器是Zimbra。到目前为止,我已经能够使用PHP的imap_open函数成功获取和显示用户电子邮件:
imap_open($server, $email, $password)
当用户点击网站上的电子邮件链接时,用户将导航到zimbra Web客户端。但是,用户必须再次重新输入登录凭据。我检查了浏览器的cookie信息,并注意到Zimbra在用户登录时设置了一个cookie ZM_AUTH_TOKEN :我相信Zimbra使用此cookie来检测用户是否已经登录。本质上,我的任务是消除这一重新登录的额外步骤;如果有开源解决方案,我也想知道这些。
答案 0 :(得分:2)
您可以在此处查看官方文档:
答案 1 :(得分:0)
这是解决方案的一半 - 抱歉,我从未使用Zimbra编程,但我已经多次在php项目中实现单点登录。
您的域名和zimbra网络服务器的域名是否相同?如果他们是你,你可以看到和操纵彼此的饼干。尝试找到处理登录的zimbra代码并设置cookie。然后编写一个小的Web服务Web页面并将其放在调用该代码的zimbra服务器上并返回cookie令牌。然后,当用户登录时,您的网站可以在幕后进行卷曲,获取cookie的令牌内容,然后设置相应的cookie以便他们登录到Zimbra。我使用只有我的插件网站知道的密码来保护Web服务网页。
如果它们不是同一个域,您仍然可以执行此操作。但是,不是通过服务器上的卷曲来实现这一点,而是必须在客户端上使用框架或JavaScript。另外,用于保护登录Web服务的简单密码将无法正常工作,因为浏览器正在访问它,并且每个人都可以看到密码。您必须使密码更安全,例如使用预定义的秘密散列其电子邮件地址(假设两台服务器上的电子邮件地址相同)。