2014-01-07 25 views
3

我正在編寫一個簡單的.NET Web應用程序,以使用EWS查看Exchange Online(Office 365)雲網站上的某些房間日曆。我知道如何在我的代碼中創建Exchange服務,將憑據設置爲新的WebCredentials(使用有效的用戶名/密碼),並自動發現服務URL。Exchange Online(EWS)WebCredentials是否安全地通過?

我的問題是:是安全發送的用戶名/密碼對還是明文?

如果這不安全,如果我明確地將服務的URL設置爲https://outlook.office365.com/EWS/Exchange.asmx URI,那麼該怎麼辦?

+0

**您如何連接到EWS?請告訴我們你的代碼。 – Dai

+0

'ExchangeService svc = new ExchangeService(); svc.Credentials =新的WebCredentials(AuthEmailAddress,AuthEmailPassword); svc.AutodiscoverUrl(AutoDiscoverEmailAddress);' – TheDudeDude

回答

3

不要致電AutoDiscoverUrl(),您可以set the url directly usingexchangeService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

此外,調用AutoDiscoverUrl()後,你也可以檢查你的ExchangeService對象的Url性能,看它是否解決了一個安全的端點或您(在例如你的配置文件從一個特定的列表)信任的端點。

爲了確保返回的Url安全可靠,您應該驗證返回的證書是否來自您期望它的組織,並且證書是由受信任的權威機構簽署的。這process is explained here。文章中提到的默認實現也接受自簽名證書,您可能不希望在生產代碼中這樣做。例如,您可以將證書固定到特定的指紋。

如果要排除自簽名的證書,所引用的樣本中更改下面的代碼返回false:

// When processing reaches this line, the only errors in the certificate chain are 
// untrusted root errors for self-signed certificates. These certificates are valid 
// for default Exchange server installations, so return true. 

// Or when you know that the certificate is signed by a trusted root authority, return false. 
return false; 

要回答你的問題,用戶名/密碼是使用NTLM或Kerberos正常安全地發送。在最壞的情況下they can be sent using basic authentication,但是如果你通過SSL連接,只要你正確地驗證SSL證書,就不應該很容易攔截密碼。

+0

我已經明確地設置了URL,但是您的評論很好(謝謝)。我現在無法訪問我的代碼,但明天我會檢查URL屬性。這可能夠好。我明天也會走下證書路線。再次感謝。 – TheDudeDude

相關問題