2009-11-06 46 views
1

得到了這個問題 - 不知道它是否可能。Sharepoint門戶ActiveX到WebClient返回Sharepoint

用戶登錄到sharepoint門戶服務器。

  1. 用戶在SPS打開一個網頁(網頁組件) - 一個ActiveX啓動
  2. 的activex從停靠條形碼掃描儀接收數據。
  3. 該ActiveX創建一個Web客戶端
  4. 該ActiveX設置Web客戶端的憑證,如點1)
  5. 該ActiveX使用WebClient.UploadFile(..)使用
  6. 在SPS一個aspx/ASCX頁收到數據(如在點1的相同用戶/會話)
  7. 大家樂(上週五) - 並進入啤酒:)

它是點4.這就是問題所在。

回答

0

它取決於所用的身份驗證機制 - 如果用戶使用NTLM(Windows集成)登錄頁面,則WebClient不能重用憑據。如果它是基於Kerberos的,那麼你有更好的機會。

1

如果用戶憑證是當前登錄的用戶憑證,這將工作;在調用GetResponse()之前,在HttpWebRequest上將UseDefaultCredentials設置爲True時,默認情況下會發送這些消息。

如果用戶提供不同於默認的憑據,比如存儲在服務器上的NTLM協商的憑據,用戶沒有選擇讓這些憑據持續(通過選擇「記住我的憑據」複選框)那麼ActiveX HttpWebRequest.GetResponse()調用將拋出WebException,並顯示一條消息,指示響應是401(未授權)。如果ActiveX的HttpWebRequest未保留到Credential Manager,則無法訪問用於在步驟(1)中進行身份驗證的緩存憑據。如果那些憑證持久存儲到憑證管理器,則只要其請求中的目標與步驟(1)中的請求中使用的目標相同,ActiveX Web客戶端就知道使用緩存的憑證;如果在兩個請求中使用的主機名相同,情況就是這樣。

最後,如果您在ActiveX控件中沒有憑據,則可以使用.NET Framework CredUIPromptForCredentialsCredUIPromptForWindowsCredentials函數提示他們。有關這些功能的信息以及有關從託管代碼中正確打包和使用它們的更多信息,請參閱MSDN上Peer Channel Team BlogApplication Password Security。使用CredUIPromptForWindowsCredentials,然後調用CredWrite,可以在ActiveX中實現與IE使用的外觀完全一致的無縫密碼提示。