Logo

(已停用!) 使用 SharePoint Azure ACS App-Only 授予访问权限

photo

2026年02月14日

简介

SharePoint仅限应用(App-Only)模型是一种传统的设置方式,用于配置应用主体。这种模型虽然已经存在多年,但对于许多组织来说依然具有重要意义,尤其是在本地和在线SharePoint环境中广泛适用。在现代化迁移的背景下,它为从本地SharePoint迁移到SharePoint Online提供了便利。

具体来说,这种模型主要用于准备应用程序,使其能够顺利从本地部署转移到云端的SharePoint Online环境。这种迁移不仅可以优化资源,还能简化系统的维护和管理,实现更高效的工作流程。

在实际操作中,管理员可以通过这一模型来设置应用主体,并赋予其不同层级的权限。例如,您可以为应用主体配置租户范围内的完全控制权限,从而使其能够全面管理数据和资源。如果仅需要基础访问权限,这种方法也支持为应用主体授予读取权限,从而满足特定的业务需求。

  • 旧模型的重要性:尽管被认为是传统方式,但它在许多迁移和整合场景中依然不可或缺。
  • 适用范围:不仅支持SharePoint Online,同时也适用于本地版本(如2013、2016、2019以及订阅版)。
  • 权限配置:灵活的权限设置使其适合不同的业务需求,无论是完全控制还是基础读取权限。
创建新的客户端ID和密码

Azure ACS 停用公告

Azure ACS(Access Control Service)曾是一个重要的工具,用于管理应用与SharePoint之间的访问权限。然而,这一服务已进入停用阶段,微软宣布自2023年11月27日起,Azure ACS正式停用,并将在2026年4月2日完全停止工作。这一变化对使用该服务的组织和开发者产生了显著影响。

停用意味着Azure ACS不再接受新的功能投资,微软不会对其进行进一步的功能开发或改进。然而,停用阶段仍然保留基本支持,这让现有用户有一定的时间进行过渡和迁移。微软建议用户尽快开始规划替代方案,以确保业务流程的连续性。

为了应对这一变化,微软强烈建议用户转向更现代化、更安全的Entra ID应用权限模型。这种新模型不仅提供更高的安全性,还能更好地支持现代化的云环境和业务需求。通过采用Entra ID,组织可以确保在未来持续获得支持,并利用新的功能提升效率。

  • 停用时间线:2023年11月27日服务停用,2026年4月2日完全停止工作。
  • 影响范围:停用阶段仍有支持,但生命周期结束后服务将完全不可用。
  • 建议替代方案:使用Entra ID应用权限模型以获得更好的安全性和功能支持。
向新主体授予权限

设置具有租户权限的仅限应用主体

为了在SharePoint环境中实现应用程序的独立访问权限,可以通过设置仅限应用主体(App-Only Principal)来完成。这一过程涉及创建客户端ID和密码,并配置所需的权限范围。以下是详细的操作步骤和注意事项。

创建客户端ID和密码:首先,需要访问租户中的页面appregnew.aspx(例如:https://contoso.sharepoint.com/_layouts/15/appregnew.aspx)。在这个页面中,管理员可以按照提示生成一个唯一的客户端ID和密码。这些信息将用于后续的权限配置和应用访问。

创建新的客户端ID和密码

需特别注意,一旦生成客户端ID和密码,务必妥善保存这些信息,因为它们不会再次显示。如果丢失,可能需要重新创建。

授予主体权限:完成客户端ID和密码的创建后,接下来需要在租户管理网站的appinv.aspx页面中为该应用主体配置权限。可以通过以下链接访问:https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspx。进入页面后,输入之前生成的客户端ID,并查找相关的主体信息。

向新主体授予权限

在权限配置中,管理员需要提供一个权限XML文档,该文档详细定义了应用的权限范围和控制权限。例如,以下XML表示授予应用对租户内容的完全控制权限:

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>

权限XML是整个配置过程中的核心部分,确保应用能够访问正确的资源,并拥有所需的权限。

确认与信任:配置完成后,点击“创建”按钮,系统会弹出一个权限许可对话框。管理员需要审查权限请求,并点击“信任它”来正式授予权限。

权限许可对话框

至此,应用主体的设置流程完成。通过这些步骤,您已经成功创建了一个具有租户范围权限的应用主体,为后续的操作做好了准备。

通过PnP PowerShell使用此主体

PnP PowerShell是一种强大的工具,旨在简化SharePoint的管理和操作。它不仅支持SharePoint Online,还适用于本地部署环境。通过使用PnP PowerShell,管理员可以利用仅限应用主体连接到SharePoint Online环境,并执行各种操作。

连接到SharePoint Online环境:使用Connect-PnPOnline命令是连接到SharePoint环境的关键步骤。此命令允许您通过客户端ID和密码的组合,安全地连接到租户中的目标站点。例如:

Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/demo -ClientId [Your Client ID] -ClientSecret "[Your Client Secret]"

在上述示例中,Url指定目标站点的URL,ClientIdClientSecret分别为之前创建的应用主体的客户端ID和密码。通过这种方式,您可以直接访问目标站点,并开展进一步的操作。

PnP PowerShell的优势:作为一个开放源代码的解决方案,PnP PowerShell拥有活跃的社区支持。这意味着您可以从社区中获得丰富的资源,包括示例代码、最佳实践以及使用技巧。以下是它的一些主要优势:

  • 简化管理:帮助管理员快速执行常见的SharePoint任务,例如站点创建、权限配置、数据导入等。
  • 跨环境支持:不仅适用于SharePoint Online,也支持本地版本的SharePoint(2013/2016/2019)。
  • 社区驱动:活跃的开发者社区定期更新和维护,确保工具的可靠性和持续改进。

虽然PnP PowerShell是一个强大的工具,但需要注意的是,它并不附带微软的正式服务级别协议(SLA)。这意味着用户需要依赖社区支持来解决问题并获取帮助。

权限许可对话框

总之,PnP PowerShell结合仅限应用主体的使用,为管理员提供了一个高效而灵活的解决方案,用于管理SharePoint环境。通过学习和应用这一工具,您可以显著提升SharePoint的操作效率。

在应用程序中使用此主体

在开发过程中,您可以通过集成仅限应用主体来实现与SharePoint的安全交互。这种方法允许应用程序使用客户端ID和密码进行独立身份验证,避免依赖用户账户,从而提升安全性和灵活性。以下是实现这一功能的详细步骤。

使用PnP框架库:一种简单而高效的方式是利用PnP框架库来集成客户端ID和密码。您可以通过添加PnP框架库的NuGet包来实现,例如:

Install-Package PnP.Framework

安装完成后,开发者可以通过以下代码快速构建应用程序与SharePoint的连接:

string siteUrl = "https://contoso.sharepoint.com/sites/demo";
using (var cc = new AuthenticationManager().GetACSAppOnlyContext(siteUrl, "[Your Client ID]", "[Your Client Secret]"))
{
    cc.Load(cc.Web, p => p.Title);
    cc.ExecuteQuery();
    Console.WriteLine(cc.Web.Title);
}

上述代码使用了PnP框架库中的AuthenticationManager类来获取上下文对象,实现了与SharePoint站点的互动。这种方式非常适合需要高效构建和管理的应用程序。

使用TokenHelper.cs类:如果您选择不使用PnP框架库,也可以直接通过TokenHelper.cs类来管理访问令牌和客户端上下文。TokenHelper.cs是一个功能强大的工具,它通过应用的配置文件来使用客户端ID和密码。这是代码示例:

using Microsoft.SharePoint.Client;
using System;

namespace AzureACSAuth
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteUrl = "https://contoso.sharepoint.com/sites/demo";

            // Get the realm for the URL
            string realm = TokenHelper.GetRealmFromTargetUrl(new Uri(siteUrl));

            // Get the access token for the URL
            string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, new Uri(siteUrl).Authority, realm).AccessToken;

            // Create a client context object based on the retrieved access token
            using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(siteUrl, accessToken))
            {
                cc.Load(cc.Web, p => p.Title);
                cc.ExecuteQuery();
                Console.WriteLine(cc.Web.Title);
            }
        }
    }
}

通过这种方式,您可以完全掌控对访问令牌的获取和使用,确保应用程序在运行时可以安全高效地与SharePoint交互。

保护客户端ID和密码:无论您选择使用PnP框架库还是TokenHelper.cs类,保护客户端ID和密码是至关重要的。这些凭据赋予应用程序对SharePoint环境的访问权限,具备极高的权限级别。如果泄露或滥用,可能会导致严重的安全问题。因此,建议将这些信息存储在安全的地方,例如加密的配置文件或安全凭据管理系统。

  • 避免将客户端ID和密码直接硬编码到代码中。
  • 使用环境变量或安全密钥管理系统来存储敏感信息。
  • 定期更新和轮换密码,减少潜在风险。
创建新的客户端ID和密码

通过以上步骤,您可以构建一个安全、高效的应用程序,与SharePoint环境进行无缝交互,同时确保敏感信息的安全性。

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

留言板

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

简介本文是一个完整教程系列中的重要组成部分,旨在帮助用户理解如何在多种平台上创建和使用自定义连接器...从OpenAPI定义创建自定义连接器

热门文章

Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1726 浏览量
SharePoint2010升级到SharePoint2013操作手册 SharePoint2010升级到SharePoint2013操作手册目录第一章...SharePoint2010升级到SharePoint2013操作手册 作者:Pastore Antonio
1696 浏览量
C# DataTable 某一列求和 列为数字类型doubletotal=Convert.ToDouble(datatable.Com...C#DataTable某一列求和 作者:Pastore Antonio
1673 浏览量
修复moss本机访问SharePoint 401.1 HTTP错误 环境:DCServer&...修复moss本机访问SharePoint401.1HTTP错误 作者:Pastore Antonio
1661 浏览量
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 这一篇是从0开始搭建SQLServerAlwaysOn的第三篇,这一篇才真正开始搭建Alway...从0开始搭建SQLServerAlwaysOn第三篇(配置AlwaysOn) 作者:Pastore Antonio
1627 浏览量