2008-10-07 68 views
5

我正在使用Exchange Web服務從一個或多個人的日曆中查找,創建,更新和刪除約會。應用程序將由經理用來查看員工的休假時間,並根據可用性分配約會。需要一種驗證Exchange Web服務的方法

爲了達到這一切,必須將經過身份驗證的用戶憑據發送到Web服務。到目前爲止,我發現的兩種方法將允許這樣做:1)傳遞每個用戶的用戶名和密碼; 2)模擬用戶使用DefaultCredentials。 DefaultCredentials選項對我們不起作用,因爲我們不允許模擬用戶。

有沒有人知道另一種方式?

+0

我們似乎需要一個屬於每個約會的所有者,以便更新預約的憑據。仍在研究這一點。 – coder1 2008-10-08 18:04:29

回答

6

是否有公司的政策限制阻止您使用的模擬?您是指Windows模擬或Exchange模擬?

根據您不能使用哪種模擬,替代方案可能是委託訪問。

如果目標是讓一個管理器中查看多個郵箱,這裏有一些選擇:

(1)委託授權訪問員工郵箱經理。根據代表訪問級別,這將允許管理員查看員工郵箱並根據需要進行編輯。關於此方法有一個警告,具體取決於訪問授予的內容/方式,代表(員工)可以刪除訪問權限,並停止管理員查看日曆。

對於使用委託訪問進行身份驗證,假定使用Web服務的應用程序在管理器上下文中運行,您應該可以使用DefaultCredentials。 (2)創建一個服務帳戶,該服務帳戶具有模擬權限或通過員工郵箱委派訪問權限。然後以服務帳戶登錄。

同樣,這裏有一些鏈接,你可能會覺得有用...

2

如果我理解你的話,經理將使用該應用程序並以EWS身份驗證身份。由於權限不足,EWS將無法更新其他用戶的郵箱。

如何讓經理訪問每個用戶的郵箱?

(還是我失去了這個問題的很大一部分?)

1

如果用戶將要登錄到他們自己的機器上,並且這些憑據可能可用E在憑證高速緩存,您可以構建從ICredentials一個WebCredential對象的對象從那裏得到:

public static ExchangeService GetService() 
{ 
    var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials); 

    var service = new ExchangeService(ExchangeVersion); 
    service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName); 
    service.Credentials = credentials; 

    return service; 
}