本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 SharePoint 的 OAuth 2.0 身分驗證
OAuth 2.0 身分驗證 (OAUTH2_APP) 會使用 OAuth 2.0 資源擁有者密碼登入資料 (ROPC) 流程,使用應用程式用戶端 ID 和秘密以及 Microsoft 365 使用者帳戶的使用者名稱和密碼進行身分驗證。連接器以該使用者身分登入以讀取內容。
重要
我們建議您設定 SharePoint 的 Microsoft Entra ID 僅限應用程式身分驗證改用 。OAuth 2.0 身分驗證有兩個限制:
-
由於它使用使用者名稱和密碼登入,因此無法完成多重要素驗證 (MFA) 挑戰或滿足需要的條件式存取政策。如果帳戶強制執行 MFA 或條件式存取,身分驗證會失敗,且資料來源無法同步。許多組織需要 MFA 來提供您在這裡使用的帳戶類型。
-
它不支援文件層級存取控制 (ACLs)。若要依使用者許可篩選查詢結果,請使用 Microsoft Entra ID 僅限應用程式身分驗證。
先決條件
-
一個 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 APIs下),然後選擇委派許可。選取
AllSites.Read(讀取所有網站集合中的項目),然後選擇新增許可。 -
在 API 許可頁面上,選擇授予 【您的組織】 的管理員同意並確認。
重要
即使 Entra 入口網站顯示需要管理員同意,您仍必須授予管理員同意:SharePoint 委派許可為否。 SharePoint AllSites.Read 該欄表示使用者通常可以在互動式登入期間同意 - 但資源擁有者密碼登入資料流程沒有互動式表面,因此無法在登入時同意許可,並且必須在 【您的組織】 的授予管理員同意下預先授予整個組織。如果沒有它,SharePoint 字符請求會失敗 AADSTS65001(使用者或管理員尚未同意使用應用程式),且資料來源無法同步。
注意
如果您的租戶已啟用安全預設值,資源擁有者密碼登入資料流程可能會遭到封鎖。您可能需要管理員來調整租戶的安全預設值或條件式存取政策,因此這裡使用的 帳戶無需 MFA 即可登入。如需詳細資訊,請參閱 Microsoft 有關安全預設值
步驟 3:建立用戶端秘密
-
在您的應用程式註冊中,選擇憑證和秘密,然後選擇用戶端秘密,然後選擇新用戶端秘密。
-
輸入描述,選擇過期,然後選擇新增。
-
立即記錄秘密值 — 只會顯示一次。記錄 值,而不是秘密 ID。
步驟 4:建立 Secrets Manager 秘密
使用下列鍵值對將登入資料存放在 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 \ --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 應用程式許可。連接器會在爬取之前檢查此範圍的圖形應用程式字符。新增 Microsoft Graph Sites.Read.All 應用程式許可並授予管理員同意。請參閱步驟 2。 |
後續步驟
存放秘密之後,請建立將 authType 設為 的資料來源OAUTH2_APP。您不提供此方法的憑證。請參閱連接 SharePoint 資料來源。