View a markdown version of this page

为 OAuth 2.0 身份验证设置 SharePoint - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 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 中注册应用程序

  1. 登录 Microsoft Entra 管理中心

  2. 在左侧导航栏中,展开 Entra ID,然后选择应用程序注册

  3. 选择 “新注册”。

  4. 在 “名称” 中,输入描述性名称,例如。bedrock-sharepoint-oauth2

  5. 对于支持的帐户类型,请选择 “仅限此组织目录中的帐户(单租户)”。

  6. 将 “重定向 URI” 留空,然后选择 “注册”。

  7. 在应用程序概述页面上,记录应用程序(客户端)ID目录(租户)ID

第 2 步:添加 API 权限并授予管理员同意

OAuth 2.0 身份验证需要两个权限:枚举网站的 Microsoft Graph 应用程序权限和读取内容的 SharePoint 委托权限。分配以下两项。

OAuth 2.0 身份验证的权限
API 权限 Type 用途
Microsoft Graph Sites.Read.All 应用程序 枚举 SharePoint 站点。
SharePoint AllSites.Read 已委托 通过 SharePoint REST API 阅读网站内容。需要管理员同意(参见以下注释)。
  1. 在您的应用程序注册中,选择 API 权限,然后选择添加权限

  2. 选择 Microsoft Graph,然后选择应用程序权限。搜索并选择Sites.Read.All,然后选择添加权限

  3. 再次选择 “添加权限”。选择 SharePoint(在 Microsoft API 下),然后选择 “委托权限”。选择AllSites.Read(阅读所有网站集中的项目),然后选择添加权限

  4. API 权限页面上,选择 [您的组织] 授予管理员同意,然后确认。

重要

即使 Entra 门户显示需要管理员同意,您也必须授予管理员同意:对于 SharePoint AllSites.Read委托的权限,否该列表示用户通常可以在交互式登录期间进行同意,但资源所有者密码凭证流程没有交互界面,因此无法在登录时获得同意,并且必须在 [您的组织] 授予管理员同意的情况下在组织范围内预先授予权限。如果没有它, SharePoint 令牌请求就会失败AADSTS65001(用户或管理员未同意使用该应用程序),并且数据源无法同步。

注意

如果您的租户启用了安全默认设置,则资源所有者密码凭证流可能会被阻止。您可能需要管理员来调整租户的安全默认设置或条件访问策略,以便此处使用的帐户无需MFA即可登录。有关更多信息,请参阅 Microsoft 关于安全默认设置的文档。

步骤 3:创建客户机密钥

  1. 在应用程序注册中,选择证书和密钥,然后选择客户端密钥,然后选择新客户机密

  2. 输入描述,选择到期时间,然后选择添加

  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 \ --name bedrock-sharepoint-oauth2-creds \ --secret-string file://secret.json

记录响应中的秘密 ARN。您可以将其用作数据源secretArn

注意

账户密码存储在密钥中,用于每次同步。如果密码更改,请更新密码。由于连接器使用此帐户登录,因此请将该密钥视为高度敏感并限制对其的访问。

问题排查

如果数据源无法同步,请将错误与以下签名进行匹配。

OAuth 2.0 同步错误
错误 原因和解决方案
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 数据源