我想使用SharePoint客户端对象模型(CSOM),而不必提供服务帐户的密码。
我的客户端应用程序是.Net DLL(下面的示例C#代码),它是从IIS托管的网站中调用的。托管网站的应用程序池的标识对SharePoint文档库具有完全特权。
以下代码有效:
using (var ctx = new ClientContext($"{SpRoot}/{SpPathToFolder}"))
{
ctx.Credentials = new NetworkCredential("username", "password", "domain");
using (ms)
{
Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, ms, true);
ctx.ExecuteQuery();
}
问题是,这意味着必须向源代码管理提交纯文本密码!
我尝试过:
Web site = ctx.Web;
ctx.Load(site);
ctx.ExecuteQuery();
我也尝试过ctx.Credentials = CredentialCache.DefaultNetworkCredentials 和ctx.Credentials = CredentialCache.DefaultCredentials
在同一DLL中,我可以使用以下代码进行一次Rest调用,以将文档添加到同一文档库中:
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("Accept", "application/xml;odata=nometadata");
HttpResponseMessage response = client.PostAsync(restUrl, null).Result;
是否可以在不提供密码的情况下使用CSOM?