2011-06-08 59 views
3

我正在嘗試將功能添加到需要從Exchange Web服務中提取用戶日曆數據的現有ASP.net網站。我知道這是可能的,並且將本地測試作爲概念驗證運行,但是我在ASP網站的上下文中執行此操作時遇到了一些問題。爲ASP網站的已驗證用戶獲取ICredentials對象

我的意圖是通過使用ASP網站憑證的當前用戶構造WebCredentials類的實例來覆蓋默認憑據,然後使用它創建Exchange服務綁定。

ExchangeService service = new ExchangeService(ExchnageVersion.2007); 
service.AutoDetect(emailAddress); 
service.Credentials = new WebCredentials(credentials); 

不幸的是,只能從任一組包含的用戶名,密碼和域串,或通過使在對象ICredentials來構造WebCredentials對象。

所以,問題是,在一個Forms認證的網站中,有沒有什麼辦法可以爲當前認證的用戶獲得一個ICredentials對象?

回答

3

沒有表單身份驗證使用瀏覽器隨每個請求發送的定製加密cookie。它讓ASP.NET知道用戶已通過身份驗證以及他們是誰。它不適用於外部系統,事實上它需要服務器上的機器鑰匙能夠解密細節。將表單憑證傳遞給另一臺服務器將毫無意義。

此係統與Windows身份驗證不同,它可以使用各種身份驗證方案(例如基本身份驗證方案,摘要身份驗證方法,NTLM身份驗證方法和Kerberos身份驗證方法作爲HTTP協議的一部分協商身份驗證憑據,並且可以由同一Exchange上的外部系統。

所以要使用ICredentials,您需要在您的ASP.Net應用程序中使用Windows身份驗證,或者有權訪問用戶名/密碼,以便您可以明確使用NetworkCrententials。

+0

謝謝你,兩個月的沉默,並有效地證實了我自己的調查結果,爲我關閉了這一個。非常感激。 – Pooli 2011-08-31 11:34:55