azure - 如果我们将 `DisableCustomAppAuthentication` 设置为 true,则针对 SharePoint Online 验证我们的 .NET 控制台应用程序
问题描述
我们有以下内容:-
- 最近创建的 SharePoint Online 租户
- 视窗服务器 2019
- .NET 控制台应用程序,其中包含一些与 SharePoint online 集成的代码
- .NET 控制台应用程序使用 Windows 任务调度程序按计划运行。
现在以前在旧租户上,我通过传递 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 代码?
解决方案
是的 同意。默认情况下,DisableCustomAppAuthentication 设置为 True,这将影响 2020 年 8 月下旬某个时间之后配置的任何租户。这将破坏许多自定义功能,例如适用于任何旧租户的应用程序或 PowerShell 脚本。
选项:
- 摆脱使用客户端 ID 和客户端密码的旧的、仅限应用程序的身份验证
这将是更好的前进方式——对于应用程序身份验证方案,您需要在 Azure Active Directory 中注册您的应用程序,但在这种情况下,您根本无法精细地管理权限。
- 不幸的是,下一个选项是设置为 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/
推荐阅读
- sendgrid - 限制来自 SendGrid 的每批中的电子邮件数量
- php - Woocommerce - 如何通过列表的方式显示单个产品的特定属性
- regex - 积极的可选前瞻
- javascript - c3 样条图 - 多个 y 轴上的多个数据
- octave - 在 Octave 中创建 Halton 序列
- javascript - 使用jQuery在无限循环中单击按钮时更改按钮的内容
- c# - Xamarin HttpClient.PutAsync 没有参数问题
- python - Python BeautifulSoup 没有返回所有 html 标签
- azure - 使用 Sharepoint 客户端 Web 部件登录
- ruby - 机械化:获取元素中的所有元素?