本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 OneDrive 的 OAuth 2.0 身分驗證
OAuth 2.0 身分驗證 (OAUTH2) 會使用應用程式用戶端 ID 和秘密以及委派的重新整理字符進行身分驗證。連接器使用重新整理權杖來取得存取權杖,以在登入使用者的委派內容中編目內容。資料來源涵蓋使用者可以存取的 OneDrive 內容:他們自己的磁碟機,以及與他們共用的任何磁碟機,或是他們有權存取 SharePoint 管理員的位置。以無提示方式略過登入使用者無法存取的磁碟機。
重要
我們建議設定 OneDrive 的 Microsoft Entra App ID 身分驗證大多數資料來源使用 。OAuth 2.0 身分驗證有下列限制:
-
它只會編目登入使用者可存取的 OneDrive 內容 (他們自己的磁碟機,以及與他們共用的任何磁碟機,或是他們具有 SharePoint 管理員存取權的位置)。系統會以無提示方式略過使用者無法存取的磁碟機。若要統一地抓取租用戶中每個使用者的 OneDrive,請使用 Microsoft Entra App ID 身分驗證。
-
它需要重新整理字符,您可以透過一次性使用者登入取得 (步驟 4)。
-
重新整理權杖的 Microsoft 端生命週期有限。當重新整理權杖過期或撤銷時,同步會失敗,直到您取得新的權杖並更新秘密為止。
-
它不支援文件層級存取控制 (ACLs)。若要依使用者許可篩選查詢結果,請使用 Microsoft Entra App ID 身分驗證。
先決條件
-
Microsoft Entra ID 管理員存取以註冊應用程式、授予管理員同意,以及建立用戶端秘密。
-
可存取您要編目之 OneDrive 內容的 Microsoft 365 使用者帳戶。您以此使用者身分登入一次,以取得重新整理字符。
-
您的 Microsoft 365 租用戶 ID。
步驟 1:在 Microsoft Entra ID 中註冊應用程式
-
在左側導覽中,展開 Entra ID,然後選擇應用程式註冊。
-
選擇新增註冊。
-
針對名稱,輸入描述性名稱,例如
bedrock-onedrive-oauth2。 -
對於支援的 帳戶類型,僅選取此組織目錄中的帳戶 (單一租戶)。
-
在重新導向 URI 下,選取 Web 做為平台,然後輸入
http://localhost:53672/callback。當您在步驟 4 中取得重新整理權杖時,您會使用此重新導向 URI。您可以使用任何免費的 localhost 連接埠;如果您在此處變更連接埠,請使用步驟 4 中的相同連接埠。 -
選擇註冊。
-
在應用程式概觀頁面上,記錄應用程式 (用戶端) ID 和目錄 (租戶) ID。
步驟 2:新增 API 許可並授予管理員同意
OAuth 2.0 身分驗證使用委派的登入,因此應用程式需要委派的許可,而不是應用程式許可。
-
在您的應用程式註冊中,選擇 API 許可,然後選擇新增許可。
-
選擇 Microsoft Graph,然後選擇委派許可。
-
選取下列委派許可,然後選擇新增許可:
Files.Read.All— 讀取使用者可存取的檔案。Sites.Read.All— 讀取使用者可以存取的 OneDrive 網站。User.Read.All— 識別使用者。offline_access— 必要,因此登入會傳回重新整理字符。
-
在 API 許可頁面上,選擇授予 【您的組織】 的管理員同意並確認。
步驟 3:建立用戶端秘密
-
在您的應用程式註冊中,選擇憑證和秘密,然後選擇用戶端秘密,然後選擇新用戶端秘密。
-
輸入描述,選擇過期,然後選擇新增。
-
立即記錄秘密值 — 只會顯示一次。記錄 值,而不是秘密 ID。
步驟 4:取得重新整理權杖
連接器需要重新整理字符,您可以透過一次性使用者登入取得。以下程序使用 OAuth 2.0 授權碼流程搭配 localhost 重新導向,適用於具有多重驗證 (MFA) 的使用者。對於非 MFA 服務帳戶,會在結尾提供更簡單的替代方案。
授權碼流程 (建議)
-
建置登入 URL。將預留位置取代為您的租戶 ID 和步驟 1 的應用程式 (用戶端) ID。如果您在步驟 1 中使用不同的 localhost 連接埠,請更新
redirect_uri以符合。https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A53672%2Fcallback&response_mode=query&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20offline_access -
登入。在瀏覽器中開啟 URL,並以您希望連接器使用其存取權的 Microsoft 365 使用者身分登入。完成任何 MFA 挑戰。
然後,瀏覽器會重新導向至未載入的 localhost URL (這是預期的,因為沒有接聽該連接埠)。瀏覽器地址列現在包含重新導向 URI,後面接著
code參數,例如:http://localhost:53672/callback?code=0.AXoA...&session_state=...。 -
複製授權碼。從地址列複製
code參數的值 (介於code=和下一個 之間的所有項目&)。程式碼有效時間為幾分鐘;立即完成步驟 4。 -
交換程式碼以取得重新整理權杖。將預留位置取代為您的租戶 ID、應用程式 (用戶端) ID、步驟 3 的用戶端秘密,以及您剛複製的授權碼。
curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "code=AUTHORIZATION_CODE" \ -d "redirect_uri=http://localhost:53672/callback" \ -d "scope=https://graph.microsoft.com/.default offline_access"回應包含
refresh_token。記錄步驟 5。
資源擁有者密碼登入資料 (非 MFA 服務帳戶的替代方案)
如果您的帳戶不需要 MFA,而且不受強制執行互動式登入的條件式存取政策約束,您可以略過瀏覽器流程,並直接將使用者的登入資料交換為重新整理字符。將預留位置取代為您的值,包括使用者的 UPN 和密碼。
curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=password" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "username=USER_UPN" \ -d "password=USER_PASSWORD" \ -d "scope=https://graph.microsoft.com/.default offline_access"
回應包含 refresh_token。記錄步驟 5。此流程不適用於強制執行 MFA 的帳戶;請改用上方的授權碼流程。
步驟 5:建立 Secrets Manager 秘密
使用下列鍵值對將登入資料存放在 AWS Secrets Manager 秘密中:
clientId— 步驟 1 中的應用程式 (用戶端) ID。clientSecret— 步驟 3 中的用戶端秘密值。refreshToken— 步驟 4 的重新整理權杖。
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "refreshToken": "your-refresh-token" }
使用 建立秘密 AWS Command Line Interface:
aws secretsmanager create-secret \ --namebedrock-onedrive-oauth2-creds\ --secret-string file://secret.json
從回應記錄秘密 ARN。您可以使用它做為資料來源 secretArn。
注意
OAUTH2 連接器會從秘密讀取重新整理字符一次,並在每次同步時重複使用它 — 它不會儲存 Microsoft 傳回的輪換值。計劃在現有重新整理權杖過期之前,挖掘新的重新整理權杖 (步驟 4) 並更新秘密中的 refreshToken 欄位。如果您未及時更新秘密,同步會失敗並出現字符重新整理錯誤,直到您更新為止。
後續步驟
存放秘密之後,請建立將 authType 設為 的資料來源OAUTH2。您不提供此方法的憑證。請參閱連接 OneDrive 資料來源。