将ActiveX到WebClient的Sharepoint门户返回到Sharepoint

时间:2009-11-06 10:44:10

标签: c# sharepoint webclient

遇到了这个问题 - 不确定是否可能。

用户登录到sharepoint门户服务器。

  1. 用户在SPS中打开页面(webpart) - 启动ActiveX
  2. ActiveX从停靠的条形码扫描器接收数据。
  3. ActiveX创建WebClient
  4. ActiveX在WebClient上设置凭据,如第1点所用。)
  5. ActiveX使用WebClient.UploadFile(..)
  6. 在SPS中,aspx / ascx页面接收数据(与第1点中的用户/会话相同。)
  7. 每个人都很开心(星期五) - 去喝啤酒:)。
  8. 第4点就是问题。

2 个答案:

答案 0 :(得分:1)

如果用户凭据是当前登录的用户凭据,这将有效;在调用GetResponse()之前,在HttpWebRequest上将UseDefaultCredentials设置为True时,默认情况下会发送这些内容。

如果用户提供了默认的不同凭据,例如存储在服务器上的NTLM协商凭据,则用户不会选择保留这些凭据(通过选择“记住我的凭据”)复选框),然后ActiveX HttpWebRequest.GetResponse()调用将抛出WebException,并显示一条消息,指示响应是401(未经授权)。 ActiveX的HttpWebRequest无法访问用于在步骤(1)中进行身份验证的缓存凭据(如果它们未持久保存到凭证管理器)。如果这些凭据 持久保存到Credential Manager,则只要其请求中的目标与请求中使用的目标相同,ActiveX Web客户端就会知道使用缓存的凭据在步骤(1);如果两个请求上使用的主机名相同,则会出现这种情况。

最后,如果您在ActiveX控件中没有凭据,则可以使用.NET Framework CredUIPromptForCredentialsCredUIPromptForWindowsCredentials函数来提示它们。有关这些功能的信息,以及有关从托管代码中正确包装和使用它们的更多信息,请参阅MSDN上Application Password Security中的Peer Channel Team Blog。使用CredUIPromptForWindowsCredentials,然后调用CredWrite,您可以在ActiveX中实现具有IE使用外观的无缝密码提示。

答案 1 :(得分:0)

这取决于所使用的身份验证机制 - 如果用户使用NTLM(Windows集成)登录页面,则WebClient无法重用凭据。如果它是基于kerberos的,你有更好的机会。