2013-03-03 130 views
4

我在我的網站上創建了一個插件,登錄的用戶可以在其中查看他們的電子郵件。我正在開發的電子郵件服務器是Zimbra。到目前爲止,我已經能夠成功地獲取和使用PHP的imap_open功能顯示用戶的電子郵件:以編程方式登錄到Zimbra

imap_open($server, $email, $password) 

當用戶點擊網站上的電子郵件中的鏈接,用戶導航到Zimbra的Web客戶端。但是,用戶將不得不再次重新輸入其登錄憑據。我檢查了瀏覽器的cookie信息,並注意到Zimbra設置了一個cookie,ZM_AUTH_TOKEN,當用戶登錄時:我相信Zimbra使用這個cookie檢測用戶是否已經登錄。實質上,我的任務是消除這種重新登錄的額外步驟;如果有開源解決方案,我也想知道這些。

+3

http://wiki.zimbra.com/index.php?title=Preauth – leftclickben 2013-03-03 15:23:09

+0

@leftclickben您可以發佈您的答案,所以我可以將其標記作爲最佳答案?謝謝。 – iab 2013-04-03 22:57:01

回答

0

這是解決方案的一半 - 對不起,我從來沒有用Zimbra編程過,但我已經多次在PHP項目中實現單點登錄。

您的域名和zimbra webserver的域名是否相同?如果他們是你可以看到和操縱彼此的餅乾。嘗試找到處理登錄並設置cookie的zimbra代碼。然後編寫一個小型Web服務網頁,並將其放在調用該代碼的zimbra服務器上,並返回cookie標記。當用戶登錄後,您的網站可以在zimbra後面進行卷曲,獲取cookie的令牌內容,然後設置相應的cookie,以便它們登錄到Zimbra。我使用只有我的插件網站知道的密碼來保護Web服務網頁。

如果他們不是相同的域,你仍然可以做到這一點。但是,不要通過在服務器上捲曲來完成此操作,而必須在客戶端上使用框架或JavaScript。另外一個簡單的密碼來保護登錄Web服務將不起作用,因爲它正在被瀏覽器訪問,並且每個人都可以看到密碼。您必須使密碼更安全,如使用預先定義的密碼對他們的電子郵件地址進行散列處理(假設它們在兩臺服務器上都是相同的)。