通过REST API访问Zimbra(如何获取zauthtoken?)

时间:2015-02-21 13:16:35

标签: authentication zimbra

我正在使用Zimbra提供的REST API,定期(以编程方式)轮询我的Zimbra电子邮件服务器上的邮件。

根据documentation,我需要通过查询字符串传递zauthtoken,以便成功检索数据。

唯一的问题是文档没有提到如何获取或创建zauth_token,这意味着我无法做任何事情。

我已经广泛搜索了Zimbra文档,也在线,但我似乎无法找到任何显示如何创建或获取身份验证令牌的内容。

有谁知道我如何获取/创建身份验证令牌,因此我可以以编程方式访问收件箱中的电子邮件?

1 个答案:

答案 0 :(得分:3)

我将假设您是最终用户而不是邮件服务器的管理员。您正在寻找的令牌是名为ZM_AUTH_TOKEN的Cookie,通常会在用户登录时设置。也就是说,您不需要使用令牌身份验证通过API访问您的收件箱;您可以通过在请求中提供用户名/密码来轻松进行身份验证(例如,使用curl' --user选项)。如果确实特别需要令牌,这里有一个如何使用curl生成它的示例:

curl --user 'your-username-here:your-password here' 'https://your-zimbra-server-here.com/home/your.account.name@your-zimbra-server-here.com/Inbox/?fmt=sync&auth=sc' -c 'where-you-want-to-save-your-cookie-file'

这是一个非常简单的curl命令,但是我想要强调一些Zimbra特定的位:URL末尾的查询(?fmt=sync&auth=sc)对于检索你的令牌至关重要。正在寻找。 auth=sc部分迫使Zimbra返回一个身份验证cookie。从技术上讲,fmt=sync可以是任何有效格式,但您必须指定某些内容;我选择了同步,因为它实际上并没有查找任何电子邮件数据,因此应该比返回电子邮件数据的命令更快地完成。

一旦curl命令完成,您就可以将ZM_AUTH_TOKEN cookie保存到-c选项后指定的任何文件中。然后,您可以在REST查询URL中将此cookie的值作为zauthtoken的值传递,并且无需以任何其他格式提供凭据即可正确进行身份验证:

curl 'https://your-zimbra-server-here.com/home/your.account.name@your-zimbra-server-here.com/Inbox/?auth=qp&zauthtoken=0_your-zauth-token-always-starts-with-zero-and-an-underscore-dont-append-an-additional-one-this-is-just-an-example'

如果您已经使用了curl,那么这有点毫无意义,因为您可以使用--user选项,但如果您需要以其他方式访问该网址,这可能会有所帮助有类似的能力。如果您必须使用令牌,请注意,每当当前的令牌到期时,您都必须生成新的Cookie /令牌。