设为首页 收藏本站
查看: 721|回复: 0

[经验分享] 使用Sharepoint 2010 Client Object Model 通过SSL验证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-28 12:14:20 | 显示全部楼层 |阅读模式
  做过Sharepoint的朋友应该都知道,如果我们想在客户端获取Sharepoint的数据,那么在2010中我们可以使用两种方式:
  1:客户端对象模型 Client Object Model
  2:  此Web Services也可以在Sharepoint 2007中使用  Web Serivices
  
  ok, 在使用Client Object Model时,需要引入两个组件,分别是Microsoft.Sharepoint.Client.dll,Microsoft.Sharepoint.Client.Runtime.dll
  首先我们按照Client Object Model的说明写一个DEMO,访问公司的Sharepoint
  

DSC0000.gif DSC0001.jpg View Code

1  static void Main(string[] args)
2         {
3             ClientContext clientContext = new ClientContext("https://[Sharepoint Server]");
4
5             List list = clientContext.Web.Lists
6                 .GetByTitle("Announcements");
7             clientContext.Load(list);
8             clientContext.ExecuteQuery();
9             Console.WriteLine("List Title: {0}", list.Title);
10             CamlQuery camlQuery = new CamlQuery();
11             camlQuery.ViewXml = "<View/>";
12             ListItemCollection listItems = list.GetItems(camlQuery);
13             clientContext.Load(listItems);
14             clientContext.ExecuteQuery();
15             foreach (ListItem listItem in listItems)
16                 Console.WriteLine("Id: {0} Title: {1}", listItem.Id, listItem["Title"]);
17         }  
  执行ExecuteQuery()时发生The remote server returned an error: (403) Forbidden. 异常。
  哦,权限异常,原来公司使用了安全套接字层(SSL),那么我们就需要证书(Certificate)来进行访问授权,需要提供Sharepoint服务器的证书,经过搜索Client Object Model With SSL后发现需要使用X509证书类,结合解决方案后代码如下:

View Code

1  static void Main(string[] args)
2         {
3             ClientContext clientContext = new ClientContext("https://[Sharepoint Server]");
4             ServicePointManager.ServerCertificateValidationCallback =
5                    delegate(object sender1, X509Certificate certificate, X509Chain chain,
6                             SslPolicyErrors sslPolicyErrors)
7                    {
8                        bool validationResult = true;
9                        return validationResult;
10                    };
11             ServicePointManager.ServerCertificateValidationCallback +=
12                 customXertificateValidation2;
13             clientContext.ExecutingWebRequest += context_ExecutingWebRequest2;
14
15             clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
16             clientContext.FormsAuthenticationLoginInfo = new FormsAuthenticationLoginInfo(Username, Passwrod);
17             clientContext.ExecuteQuery();
18
19             List list = clientContext.Web.Lists
20                 .GetByTitle("Announcements");
21             clientContext.Load(list);
22             clientContext.ExecuteQuery();
23             Console.WriteLine("List Title: {0}", list.Title);
24             CamlQuery camlQuery = new CamlQuery();
25             camlQuery.ViewXml = "<View/>";
26             ListItemCollection listItems = list.GetItems(camlQuery);
27             clientContext.Load(listItems);
28             clientContext.ExecuteQuery();
29             foreach (ListItem listItem in listItems)
30                 Console.WriteLine("Id: {0} Title: {1}", listItem.Id, listItem["Title"]);
31         }
32
33         static void context_ExecutingWebRequest2(object sender, WebRequestEventArgs e)
34         {
35             HttpWebRequest webReq = e.WebRequestExecutor.WebRequest;
36             var certificateFile = AppDomain.CurrentDomain.BaseDirectory + @"\sharepoint.cer";
37             X509Certificate cert = X509Certificate.CreateFromCertFile(certificateFile);
38             webReq.ClientCertificates.Add(cert);
39         }
40
41         private static bool customXertificateValidation2(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
42         {
43             return true;
44         }  增加一个验证服务器证书的静态回调函数, 以及一个context的EventHandler<WebRequestEventArgs>,要使用SSL证书加密,必须要根据证书创建X509Certificate实例,执行ExecuteQuery后取得访问授权。结果如下:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119972-1-1.html 上篇帖子: SharePoint 2010之Visio Services入门1-2-3 下篇帖子: SharePoint 2010 网站备份还原简单介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表