导语:本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的实用功能,添加预认证的登录方式,分享开发细节。
0x00 前言
本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的实用功能,添加预认证的登录方式,分享开发细节。
0x01 简介
本文将要介绍以下内容:
预认证
计算preauth
SOAP实现
开源代码
0x02 预认证
参考资料:https://wiki.zimbra.com/wiki/Preauth
简单理解:通过preAuthKey结合用户名、时间戳和到期时间,计算得出的HMAC作为身份验证的令牌,可用于用户邮箱和SOAP登录
默认配置下,Zimbra未启用预认证的功能,需要手动开启
(1)开启预认证并生成PreAuthKey
命令如下:
其中,
对应测试环境的命令为:/opt/zimbra/bin/zmprov generateDomainPreAuthKey mail.test.com
测试环境的输出如下:
(2)读取已有的PreAuthKey
命令如下:
对应测试环境的命令为:/opt/zimbra/bin/zmprov gd mail.test.com zimbraPreAuthKey
测试环境的输出如下:
注:
如果Zimbra存在多个域名,那么会有多个PreAuthKey
0x03 计算preauth
参考资料中给出了多种计算preauth的示例,但是Python的实现代码不完整,这里补全Python3下的完整实现代码,详细代码如下:
代码会自动生成可用的URL,浏览器访问可以登录指定邮箱
0x04 SOAP实现
SOAP格式:
SOAP格式示例:
需要timestamp和preauth作为参数,使用预认证登录的详细代码如下:
以上代码通过预认证登录,返回可用的token,通过该token可以进行后续的SOAP操作,列出文件夹邮件数量的实现代码:
0x05 开源代码
新的代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py
添加了使用预认证登录的功能
0x06 小结
本文扩充了Zimbra SOAP API的调用方法,添加了使用预认证登录的功能。
本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址