Jump to content

0x00 前言本文將要繼續擴充開源代碼Zimbra_SOAP_API_Manage的實用功能,添加預認證的登錄方式,分享開發細節。

0x01 簡介本文將要介紹以下內容:

預認證

計算preauth

SOAP實現

開源代碼

0x02 預認證參考資料:https://wiki.zimbra.com/wiki/Preauth

簡單理解:通過preAuthKey結合用戶名、時間戳和到期時間,計算得出的HMAC作為身份驗證的令牌,可用於用戶郵箱和SOAP登錄

默認配置下,Zimbra未啟用預認證的功能,需要手動開啟

(1)開啟預認證並生成PreAuthKey命令如下:

1.png其中,

2.png對應測試環境的命令為:/opt/zimbra/bin/zmprov generateDomainPreAuthKey mail.test.com

測試環境的輸出如下:

3.png(2)讀取已有的PreAuthKey命令如下:

4.png對應測試環境的命令為:/opt/zimbra/bin/zmprov gd mail.test.com zimbraPreAuthKey

測試環境的輸出如下:

5.png注:

如果Zimbra存在多個域名,那麼會有多個PreAuthKey

0x03 計算preauth參考資料中給出了多種計算preauth的示例,但是Python的實現代碼不完整,這裡補全Python3下的完整實現代碼,詳細代碼如下:

6.png代碼會自動生成可用的URL,瀏覽器訪問可以登錄指定郵箱

0x04 SOAP實現SOAP格式:

7.pngSOAP格式示例:

8.png需要timestamp和preauth作為參數,使用預認證登錄的詳細代碼如下:

9.png 10.png 11.png

以上代碼通過預認證登錄,返回可用的token,通過該token可以進行後續的SOAP操作,列出文件夾郵件數量的實現代碼:

12.png 13.png0x05 開源代碼新的代碼已上傳至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py

添加了使用預認證登錄的功能

0x06 小結本文擴充了Zimbra SOAP API的調用方法,添加了使用預認證登錄的功能。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...