首页 > 解决方案 > 如果我们将 `DisableCustomAppAuthentication` 设置为 true,则针对 SharePoint Online 验证我们的 .NET 控制台应用程序

问题描述

我们有以下内容:-

现在以前在旧租户上,我通过传递 ClientID 和 Client Secret 使用此方法验证我的代码:-

      static void Main(string[] args)
              {
                       
                  string siteUrl = "https://***.sharepoint.com/sites/CustomerServiceKB/";
                  string clientId = "******";
                  string clientSecret = "*****";
                  using (ClientContext context = new OfficeDevPnP.Core.AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl, clientId, clientSecret))
            
                  {

但是在我们新创建的租户上,我们无法使用上述方法验证我们的代码,因为我们将 DisableCustomAppAuthentication 设置为 true .. 现在我们不想修改此属性。

所以我们的问题是;如果我们将 DisableCustomAppAuthentication 设置为 true(并且我们不想将其设置为 false),那么我们如何验证我们的控制台应用程序?哪个托管在我们的 Windows 服务器中,哪个使用任务调度程序按计划运行?

现在我阅读了这种在 azure AD @ https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azuread中使用注册应用程序在 Azure AD 中注册新应用程序的方法。但是当我点击注册一个新的应用程序时,我收到了这条消息:-

在此处输入图像描述

所以这让我担心我会采用一种已经被弃用的方法......那么,我们应该遵循什么最新方法来使用 SharePoint Online 在我们的控制台应用程序中验证我们的 CSOM 代码?

标签: azureazure-active-directorysharepoint-onlinemsaladal

解决方案


是的 同意。默认情况下,DisableCustomAppAuthentication 设置为 True,这将影响 2020 年 8 月下旬某个时间之后配置的任何租户。这将破坏许多自定义功能,例如适用于任何旧租户的应用程序或 PowerShell 脚本。

选项:

  1. 摆脱使用客户端 ID 和客户端密码的旧的、仅限应用程序的身份验证

这将是更好的前进方式——对于应用程序身份验证方案,您需要在 Azure Active Directory 中注册您的应用程序,但在这种情况下,您根本无法精细地管理权限。

  1. 不幸的是,下一个选项是设置为 False。

将属性 DisableCustomAppAuthentication 设置为 false。您还可以通过禁用租户属性“DisableCustomAppAuthentication”来启用自定义应用程序身份验证。

您至少需要具有 SharePoint 管理员权限才能运行它。

首先,将您的 SharePoint Online PowerShell 模块更新到最新版本。之后,进行身份验证,然后在下面运行:

设置-SPOTenant -DisableCustomAppAuthentication $false

或者,您可以运行此 PnP 命令行开关:

设置 PnPTenant -DisableCustomAppAuthentication $false

AAD 中的应用注册不会被弃用。发布的 ADAL 库将在 2022 年 6 月 30 日结束支持。因此这不会影响在 Azure AD 中创建应用程序 ID。

现在,当您在 App Registration 中注册新应用程序时,您会看到现在添加了 MS Graph 权限,而不是 Azure AD Graph 权限。当您更新现有应用程序以使用 MS Graph 权限时,您需要再次为应用程序提供同意,因为应用程序的权限正在更改。此外,您只需要对您在租户中注册的应用程序执行此操作,即您已发布的单租户应用程序和多租户应用程序。

Microsoft 将对 Microsoft 应用程序进行更新,您无需为 Microsoft 拥有的应用程序执行任何特定操作。我们可以编写脚本来将相同的权限集从 Azure AD Graph 映射到 MS Graph 权限,但在这种情况下,您还需要再次同意这些应用程序。

很快,MS 将显示在您的租户中使用 Azure AD Graph 权限的应用程序列表。然后事情会变得容易,因为您可以直接对其采取行动。

参考:https ://www.koskila.net/literally-break-changes-to-app-authentication-on-sharepoint-%F0%9F%98%B5/


推荐阅读