

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 SharePoint 的 OAuth 2.0 身分驗證
<a name="kb-managed-sharepoint-oauth2-setup"></a>

OAuth 2.0 身分驗證 (`OAUTH2_APP`) 會使用 OAuth 2.0 資源擁有者密碼登入資料 (ROPC) 流程，使用應用程式用戶端 ID 和秘密以及 Microsoft 365 使用者帳戶的使用者名稱和密碼進行身分驗證。連接器以該使用者身分登入以讀取內容。

**重要**  
我們建議您[設定 SharePoint 的 Microsoft Entra ID 僅限應用程式身分驗證](kb-managed-sharepoint-entra-setup.md)改用 。OAuth 2.0 身分驗證有兩個限制：  
由於它使用使用者名稱和密碼登入，因此無法完成多重要素驗證 (MFA) 挑戰或滿足需要的條件式存取政策。如果帳戶強制執行 MFA 或條件式存取，身分驗證會失敗，且資料來源無法同步。許多組織需要 MFA 來提供您在這裡使用的帳戶類型。
它不支援文件層級存取控制 (ACLs)。若要依使用者許可篩選查詢結果，請使用 Microsoft Entra ID 僅限應用程式身分驗證。

## 先決條件
<a name="kb-managed-sharepoint-oauth2-prereqs"></a>
+ 一個 Microsoft 365 使用者帳戶，其使用者名稱和密碼由連接器用來登入。帳戶必須能夠存取您要抓取的 SharePoint 網站，而且登入時不需要 MFA 或條件式存取。
+ Microsoft Entra ID 管理員存取以註冊應用程式並建立用戶端秘密。
+ 您的 Microsoft 365 租用戶 ID。

## 步驟 1：在 Microsoft Entra ID 中註冊應用程式
<a name="kb-managed-sharepoint-oauth2-step1"></a>

1. 登入 [Microsoft Entra 管理中心](https://entra.microsoft.com/)。

1. 在左側導覽中，展開 **Entra ID**，然後選擇**應用程式註冊**。

1. 選擇**新增註冊**。

1. 針對**名稱**，輸入描述性名稱，例如 `bedrock-sharepoint-oauth2`。

1. 對於**支援的 帳戶類型**，**僅選取此組織目錄中的帳戶 （單一租戶）**。

1. 將**重新導向 URI** 保留空白，然後選擇**註冊**。

1. 在應用程式**概觀**頁面上，記錄**應用程式 （用戶端） ID** 和**目錄 （租戶） ID**。

## 步驟 2：新增 API 許可並授予管理員同意
<a name="kb-managed-sharepoint-oauth2-step2"></a>

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 許可**，然後選擇**新增許可**。

1. 選擇 **Microsoft Graph**，然後選擇**應用程式許可**。搜尋並選取 `Sites.Read.All`，然後選擇**新增許可**。

1. 再次選擇**新增許可**。選擇 **SharePoint** （在 **Microsoft APIs**下），然後選擇**委派許可**。選取 `AllSites.Read`（讀取所有網站集合中的項目），然後選擇**新增許可**。

1. 在 **API 許可**頁面上，選擇**授予 【您的組織】 的管理員同意**並確認。

**重要**  
即使 Entra 入口網站顯示**需要管理員同意，您仍必須授予管理員同意：SharePoint 委派許可為否**。 SharePoint `AllSites.Read` 該欄表示使用者通常可以在互動式登入期間同意 - 但資源擁有者密碼登入資料流程沒有互動式表面，因此無法在登入時同意許可，並且必須在 **【您的組織】 的授予管理員同意**下預先授予整個組織。如果沒有它，SharePoint 字符請求會失敗 `AADSTS65001`（使用者或管理員尚未同意使用應用程式），且資料來源無法同步。

**注意**  
如果您的租戶已啟用安全預設值，資源擁有者密碼登入資料流程可能會遭到封鎖。您可能需要管理員來調整租戶的安全預設值或條件式存取政策，因此這裡使用的 帳戶無需 MFA 即可登入。如需詳細資訊，請參閱 Microsoft 有關[安全預設值](https://learn.microsoft.com/en-us/entra/fundamentals/security-defaults)的文件。

## 步驟 3：建立用戶端秘密
<a name="kb-managed-sharepoint-oauth2-step3"></a>

1. 在您的應用程式註冊中，選擇**憑證和秘密**，然後選擇**用戶端秘密**，然後選擇**新用戶端秘密**。

1. 輸入描述，選擇過期，然後選擇**新增**。

1. 立即記錄秘密**值** — 只會顯示一次。記錄 **值**，而不是**秘密 ID**。

## 步驟 4：建立 Secrets Manager 秘密
<a name="kb-managed-sharepoint-oauth2-step4"></a>

使用下列鍵值對將登入資料存放在 AWS Secrets Manager 秘密中：
+ `clientId` — 步驟 1 中的應用程式 （用戶端） ID。
+ `clientSecret` — 步驟 3 中的用戶端秘密值。
+ `userName` — Microsoft 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`。

**注意**  
帳戶密碼會存放在秘密中，並用於每次同步。如果密碼變更，請更新秘密。由於連接器使用此帳戶登入，請將秘密視為高度敏感，並限制其存取。

## 疑難排解
<a name="kb-managed-sharepoint-oauth2-troubleshooting"></a>

如果資料來源無法同步，請將錯誤與下列簽章比對。


**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 應用程式許可。連接器會在爬取之前檢查此範圍的圖形應用程式字符。新增 Microsoft Graph Sites.Read.All 應用程式許可並授予管理員同意。請參閱步驟 2。 | 

## 後續步驟
<a name="kb-managed-sharepoint-oauth2-next"></a>

存放秘密之後，請建立將 `authType` 設為 的資料來源`OAUTH2_APP`。您不提供此方法的憑證。請參閱[連接 SharePoint 資料來源](kb-managed-ds-sharepoint-connect.md)。