2009-11-06 69 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使用的外观完全一致的无缝密码提示。