SharePoint Foundation 2010 Client Object Model Authentication

冷暖自知 提交于 2019-12-13 14:33:20

问题


I want to implement a custom logging by passing authentication information, as shown in below reference links:

  • http://blogs.msdn.com/b/cjohnson/archive/2011/05/03/authentication-with-sharepoint-online-and-the-client-side-object-model.aspx
  • http://msdn.microsoft.com/en-us/library/hh147177(v=office.14).aspx

I'm using below code but it does not automatically login instead it just popup the login window to enter username and password. I want to automatically log in by passing the credentials pro grammatically.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using System.Net;
using MSDN.Samples.ClaimsAuth;

namespace Sp_Ctx
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //if (args.Length < 1) { Console.WriteLine("SP_Ctx <url>"); return; }

            string targetSite = "https://mysite.sharepoint.com";//args[0];
            using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite))
            {
                if (ctx != null)
                {
                    ctx.Credentials = new NetworkCredential("guest@mysite.com.au", "password", "mysite.sharepoint.com");
                    ctx.Load(ctx.Web); // Query for Web
                    ctx.ExecuteQuery(); // Execute
                    Console.WriteLine(ctx.Web.Title);
                }
            }
            Console.ReadLine();
        }
    }
}

UPDATE:

I've hosted a MS 365 sharepoint 2013 site but i want to use the version 2010 authentication mechanism.


回答1:


The MSDN sample project that you're using will only allow claims-based authentication via a pop-up. To do this programmatically, I used a different helper library, Wictor Wilén's claims demo. You can then use his MsOnlineClaimsHelper class to authenticate. Here is sample code taken directly from Wictor's blog:

MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(url, username, password);    

using (ClientContext context = new ClientContext(url)) {

  context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest;

  context.Load(context.Web);

  context.ExecuteQuery();

  Console.WriteLine("Name of the web is: " + context.Web.Title);

}

This was what I did for a project six months ago. However, I would be interested to hear if there is a new best practice or something provided by Microsoft.




回答2:


Try this:

ctx.Credentials = new NetworkCredential("guest", "password", "mysite.com.au");

The Domain in the credentials should be the domain of your guest account instead of sharepoint server name.



来源:https://stackoverflow.com/questions/15737059/sharepoint-foundation-2010-client-object-model-authentication

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!