首页 > 其他 > 详细

SharePoint CSOM:Online 和 On-premises 版本在身份认证方面的一个小区别

时间:2021-02-07 18:24:58      阅读:24      评论:0      收藏:0      [点我收藏+]

之前我对 SharePoint CSOM 不是很感兴趣,因为越来越多的项目开始从服务器端走向 Web 前端开发,用的大多数是 JSOM 这种基于浏览器的JS API。
不过这两年做的项目中,居然连续3次用到了CSOM,其中两次是开发 Web API,一次是开发的控制台程序,用于计划任务。

前几天有这么一个需求场景:
使用 CSOM 开发一个 Provider-Hosted SharePoint Add-in,是部署到 SharePoint Online环境的。
其中有个功能需要做一个 Web API,使用一个权限比较高的账户作为“代理”,来存取列表中的数据。

以前在 SharePoint 2016上部署过 Web API 的时候,也是这种模式,当时用的是 AD 账户。
在 2016 环境中,我们有过 2种方式来控制 Web API的运行账户:

1. 在运行 Web API 的 IIS 应用程序中,配置其应用程序池(Application Pool)用指定的账户运行,保存的时候会要求你输入2次密码确认。
2. 在 web.config 中事先配置好用户名和密码,或者代码中 hard coding 也行吧 ~~ 程序在获取 Context 之后,设置它的 Credentials 属性。代码如下:
public static ClientContext GetContextBySite(string siteUrl)
{
    ClientContext context = new ClientContext(siteUrl);
    context.Credentials = new NetworkCredential("apac\\haining.chen", "Abc123456");
    //context.Credentials = new NetworkCredential("haining.chen", "Abc123456","apac.com"); // 这种方式中,第3个参数是 domain name

    return context;
}

但是这种两方式在 Online 环境下都不再可行,因为 SharePoint Online 基于 Office 365,用户身份来自AAD(Azure AD)。
其格式类似:“haining.chen@abcdcompany.com”,而不是 On-premises AD 的格式:“abcd\haining.chen”。
第一种方式中,需要修改 IIS 应用程序的 Identity 属性,但是你输入邮箱是不认的,保存的时候会提示你,指定的用户名不存在。

那么是不是用第二种方式,把代码中的账号换成邮箱格式就行了呢?

照样行不通~

因为毕竟是两种不同的账号,背后的验证机制也不同,所以我们需要新的方式:

public static ClientContext GetContextBySite(string siteUrl)
{
    ClientContext context = new ClientContext(siteUrl);
    SecureString securePassword = new SecureString();
    foreach (char passChar in "Abc123456")
    {
        securePassword.AppendChar(passChar);
    }

    context.Credentials = new SharePointOnlineCredentials("apac\\MyAccount", securePassword);
    return context;
}

这里用的是新种类的 Credential:SharePointOnlineCredentials,注意它要先把密码转为 SecureString 才行。

这样就可以在 SharePoint Online 环境中以指定的账户来运行了,当然要引用的 CSOM 版本也是最新的才行。

-------------------------------------
第一次发帖子,话说怎么样粘贴 Visual Studio 中的代码格式到编辑器中呢?都是纯文本的,得手动加格式。

SharePoint CSOM:Online 和 On-premises 版本在身份认证方面的一个小区别

原文:https://www.cnblogs.com/chenhaining/p/14384875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!