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的調用方法,添加了使用預認證登錄的功能。
Recommended Comments