2009-12-10 76 views
0

我們有一個.NET ActiveX控件,它嵌入在自定義SharePoint頁面內。 用戶必須進行身份驗證(Windows身份驗證不是表單身份驗證)才能訪問此頁面。從.NET ActiveX控件訪問SharePoint身份驗證信息

我們的ActiveX控件正在將Web服務調用回到SharePoint服務器。由於SharePoint服務器不允許匿名訪問,因此我們需要提供憑據作爲Web服務調用的一部分。如果用戶在提示輸入憑據時檢查「記住密碼」複選框,則我們可以通過CredentialCache.DefaultNetworkCredentials訪問這些憑據。但是,如果他們未檢查該複選框,我們需要另一種機制來獲取有效憑證(由於我們嵌入在只能通過身份驗證訪問的頁面中,因此必須存在)。

我們如何訪問我們需要通過SharePoint進行身份驗證的憑據信息(可能存儲在cookie中),以便我們可以訪問Web服務?

+0

看起來我們可能可以將JavaScript從Cookie傳遞到我們的控件中並使用它們。 – 2009-12-10 20:45:27

回答

0

SPUtility類中有一個名爲EnsureAuthentication的方法,您也可以點擊/_layouts/Authenticate.aspx頁面以自動將用戶登錄到SharePoint中。

您也可以使用Impersonation封裝您的呼叫。

+0

EnsureAuthentication似乎是一種服務器端方法,但我們正在尋找一種方法來執行客戶端,在我們的客戶端機器上託管的ActiveX控件中。 至於Authenticate.asmx,我們正在尋找一種機制來獲取用戶在導航到託管頁面時已提供的憑據,而不是重新提示用戶輸入憑據。 – 2009-12-10 20:44:28

+0

我使用類似的方法從Silverlight應用程序訪問SharePoint。我的請求是這樣的:Silverlight調用ASHX文件(在SharePoint下),ASHX文件使用RunWithElevatedPrivileges模擬請求並輸出返回結果。我向你發送了win32模擬,以便你可以構建更少的以共享點爲中心的模式。 Authenticate.aspx的想法是,請求將獲得當前用戶並傳遞給Windows帳戶並自動將請求傳遞給實際的Web服務 – 2009-12-11 00:53:22

-1

您可以像使用XMLHTP從Silverlight那樣發送消息給您的ashx。

+0

使用正確的憑證發送該消息正是我想要在此解決的問題。 – 2010-01-22 19:31:33