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

[经验分享] SharePoint Web Service的身份验证

[复制链接]

尚未签到

发表于 2015-9-26 09:26:02 | 显示全部楼层 |阅读模式
  WebPart中对SharePoint Web Service的身份验证(Form Authentication)
  主要是拿到Request中的Cookie(system.web.HttpCookie)转换成CookieContainer中需要的Cookie(system.net.Cookie)
假设我们使用最常用的lists.asmx来获取SharePoint列表数据,添加的Web引用的命名空间是spwsList


            Dim serviceURL As String = SPContext.Current.Site.OpenWeb.Site.Url & "/_vti_bin/lists.asmx"
            Dim server As spwsList.Lists = Nothing
            server = New spwsList.Lists
            server.CookieContainer = New Net.CookieContainer
            For i As Integer = 0 To Me.Context.Request.Cookies.Count - 1
                Dim c As Web.HttpCookie = Me.Context.Request.Cookies(i)
                If c.Name.ToUpper = ".ASPXAUTH" Then
                    Dim coo As New Net.Cookie(c.Name, c.Value, c.Path)
                    server.CookieContainer.Add(New Uri(serviceURL), coo)
                    Exit For
                End If
            Next
            Return server  
  --------------------以下转载自http://blog.joycode.com/erucy/archive/2008/07/28/115205.aspx--------------------
  SharePoint内置了一套相对比较完整的Web Services提供给开发者,这样就可以在客户端、跨平台的程序中读取甚至修改SharePoint中的内容。不过当SharePoint网站不允许匿名访问的时候,调用Web Services自然也需要提供身份验证。
  SharePoint身份验证最常用的是Windows验证(Windows Authentication)和表单验证(Form Authentication)两种。
  Windows验证即使用Windows账号或者AD账号来进行身份验证,对于这种验证方式,在SharePoint SDK中已经给出了如何提供身份验证的方法,假设我们使用最常用的lists.asmx来获取SharePoint列表数据,添加的Web引用的命名空间是spwsList:
  


使用当前帐户身份:


1 spwsList.Lists wsLists = new spwsList.Lists();
2 wsLists.Credentials = CredentialCache.DefaultCredential;
3 Console.WriteLine(wsLists.GetListCollection().OuterXml);


  

使用指定帐户:


1 spwsList.Lists wsLists = new spwsList.Lists();
2 wsLists.Credentials = new NetworkCredential("username", "password", "domain");
3 Console.WriteLine(wsLists.GetListCollection().OuterXml);

  
  上面的CredentialCache、NetworkCredential都是在System.Net命名空间下。
  
  表单认证是SharePoint 2007新加入的一种身份认证方式,其后台是使用.Net Framework中的Membership机制进行用户身份的识别,对于外网来说,大都是使用表单认证的方式来实现的。在使用表单认证的SharePoint网站中通过Web Service获取数据稍微麻烦一些,不过也可以通过SharePoint提供的表单认证Web Service来创建用户身份相关的Cookie。
  表单认证Web Service的地址是:http://[server]/[site]/_vti_bin/authentication.asmx
  在使用Web Service的程序中再次加入上面这个Web引用,假设其命名空间是spwsAuth,那么使用表单认证构造身份并访问数据的代码实例如下:





1 spwsAuth.Authentication auth = new spwsAuth.Authentication();
2 auth.CookieContainer = new CookieContainer();
3 auth.AllowAutoRedirect = true;
4 spwsAuth.LoginResult lr = auth.Login("username", "password");
5 if (lr.ErrorCode == spwsAuth.LoginErrorCode.NoError)
6 {
7     spwsList.Lists wsList = new spwsList.Lists();
8     wsList.CookieContainer = auth.CookieContainer;
9     XmlNode res = wsList.GetListCollection();
10     Console.WriteLine(res.OuterXml);
11 }

  
  
  

运维网声明 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-118935-1-1.html 上篇帖子: MOSS 2007 应用随笔(30)--为sharepoint的内部页面添加后台代码 下篇帖子: SharePoint 2013 初始化Ribbon选中Tab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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