本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 OAuth 2.0 身份验证设置 SharePoint
OAuth 2.0 身份验证 (OAUTH2_APP) 使用 OAuth 2.0 资源所有者密码凭证 (ROPC) 流程,使用应用程序客户端 ID 和密码以及 Microsoft 365 用户帐户的用户名和密码进行身份验证。连接器以该用户的身份登录以阅读内容。
重要
我们建议设置 Microsoft Entra ID App-Only 身份验证用于 SharePoint改用。OAuth 2.0 身份验证有两个限制:
-
由于它使用用户名和密码登录,因此无法完成多因素身份验证 (MFA) 质询,也无法满足需要多因素身份验证 (MFA) 的条件访问策略。如果账户强制执行 MFA 或条件访问,则身份验证失败且数据源无法同步。许多组织要求您在此处使用的账户类型使用 MFA。
-
它不支持文档级访问控制 (ACL)。要按用户权限筛选查询结果,请使用 Microsoft Entra ID App-Only 身份验证。
先决条件
-
一个 Microsoft 365 用户帐户,连接器使用其用户名和密码进行登录。该账户必须有权访问您要抓取的 SharePoint 网站,并且登录时不得需要 MFA 或条件访问权限。
-
Microsoft Entra ID 管理员访问权限,用于注册应用程序和创建客户机密钥。
-
获取您的 Microsoft 365 租户 ID。
第 1 步:在 Microsoft Entra ID 中注册应用程序
-
在左侧导航栏中,展开 Entra ID,然后选择应用程序注册。
-
选择 “新注册”。
-
在 “名称” 中,输入描述性名称,例如。
bedrock-sharepoint-oauth2 -
对于支持的帐户类型,请选择 “仅限此组织目录中的帐户(单租户)”。
-
将 “重定向 URI” 留空,然后选择 “注册”。
-
在应用程序概述页面上,记录应用程序(客户端)ID 和目录(租户)ID。
第 2 步:添加 API 权限并授予管理员同意
OAuth 2.0 身份验证需要两个权限:枚举网站的 Microsoft Graph 应用程序权限和读取内容的 SharePoint 委托权限。分配以下两项。
| API | 权限 | Type | 用途 |
|---|---|---|---|
| Microsoft Graph | Sites.Read.All |
应用程序 | 枚举 SharePoint 站点。 |
| SharePoint | AllSites.Read |
已委托 | 通过 SharePoint REST API 阅读网站内容。需要管理员同意(参见以下注释)。 |
-
在您的应用程序注册中,选择 API 权限,然后选择添加权限。
-
选择 Microsoft Graph,然后选择应用程序权限。搜索并选择
Sites.Read.All,然后选择添加权限。 -
再次选择 “添加权限”。选择 SharePoint(在 Microsoft API 下),然后选择 “委托权限”。选择
AllSites.Read(阅读所有网站集中的项目),然后选择添加权限。 -
在 API 权限页面上,选择 [您的组织] 授予管理员同意,然后确认。
重要
即使 Entra 门户显示需要管理员同意,您也必须授予管理员同意:对于 SharePoint AllSites.Read委托的权限,否。该列表示用户通常可以在交互式登录期间进行同意,但资源所有者密码凭证流程没有交互界面,因此无法在登录时获得同意,并且必须在 [您的组织] 授予管理员同意的情况下在组织范围内预先授予权限。如果没有它, SharePoint 令牌请求就会失败AADSTS65001(用户或管理员未同意使用该应用程序),并且数据源无法同步。
注意
如果您的租户启用了安全默认设置,则资源所有者密码凭证流可能会被阻止。您可能需要管理员来调整租户的安全默认设置或条件访问策略,以便此处使用的帐户无需MFA即可登录。有关更多信息,请参阅 Microsoft 关于安全默认设置
步骤 3:创建客户机密钥
-
在应用程序注册中,选择证书和密钥,然后选择客户端密钥,然后选择新客户机密。
-
输入描述,选择到期时间,然后选择添加。
-
立即记录秘密值 ——它只显示一次。记录值,而不是秘密 ID。
第 4 步:创建 Secrets Manager 密钥
使用以下键值对将凭证存储在 AWS Secrets Manager 密钥中:
clientId— 步骤 1 中的应用程序(客户端)ID。clientSecret— 步骤 3 中的客户机密值。userName— 微软 365 用户帐户的用户名 (UPN)。password— 该帐户的密码。
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "userName": "user@yourdomain.onmicrosoft.com", "password": "your-account-password" }
使用以下命令创建密钥 AWS Command Line Interface:
aws secretsmanager create-secret \ --namebedrock-sharepoint-oauth2-creds\ --secret-string file://secret.json
记录响应中的秘密 ARN。您可以将其用作数据源secretArn。
注意
账户密码存储在密钥中,用于每次同步。如果密码更改,请更新密码。由于连接器使用此帐户登录,因此请将该密钥视为高度敏感并限制对其的访问。
问题排查
如果数据源无法同步,请将错误与以下签名进行匹配。
| 错误 | 原因和解决方案 |
|---|---|
AADSTS65001(用户或管理员未同意使用该应用程序) |
SharePoint AllSites.Read委派的权限未获得管理员同意。在您的应用程序注册中,选择 API 权限,然后为 [您的组织] 授予管理员同意。参见步骤 2。 |
Rest API token request failed with status: 400 |
资源所有者密码凭证在身份验证时登录失败,这通常是因为该账户需要 MFA 或流程无法满足的条件访问策略。使用不需要 MFA 的账户,并确认密钥password中的userName和正确无误。 |
SharePoint app is missing required scopes |
尚未授予(或同意)Microsoft Graph Sites.Read.All 应用程序权限。在抓取之前,连接器会检查该作用域的 Graph 应用程序令牌。添加 Microsoft Graph Sites.Read.All 应用程序权限并授予管理员同意。参见步骤 2。 |
后续步骤
存储密钥后,在authType设置为的情况下创建数据源OAUTH2_APP。您没有为此方法提供证书。请参阅Connect SharePoint 数据源。