產業脈動 2026 年 10 月 9 日

2026-10-09 — SharePoint 與 OneDrive 將於 2027-04-01 淘汰 tempauth URL

primary=https://devblogs.microsoft.com/microsoft365dev/pre-authenticated-tempauth-urls-are-retiring-move-to-microsoft-entra-id-tokens-before-april-1-2027/ primary=https://learn.microsoft.com/powershell/module/microsoft.online.sharepoint.powershell/set-spotenantpreauthsettings

SharePoint 與 OneDrive 將於 2027-04-01 淘汰 tempauth 預先驗證 URL

Microsoft 365 Developer Blog(SharePoint 團隊) · 2026-10-08

Microsoft Graph 檔案 API 過去回傳的「拿了就能下載」URL,將從 2027 年 4 月 1 日起不再內嵌 tempauth token,呼叫端必須自己帶上 Microsoft Entra ID access token。受影響的是 SharePoint Online 與 OneDrive。

這篇公告把「怎麼改」寫得很細,但最容易漏掉的是:你的程式碼可能根本沒意識到自己在依賴這類 URL。

原本的問題

預先驗證 URL 是自行簽發、短效、綁定單一項目的 token,通常放在 tempauth 查詢參數裡。拿到 URL 的人不需要任何身分,就能直接 GET 或 PUT。這讓下載、上傳、縮圖都很好接,但也代表 URL 一旦被記錄進 log、轉傳給別的服務或寫進佇列,就等於交出了存取權。

公告的核心規則只有一條:凡是原本不帶 Authorization header 也能用的 URL,之後都要帶有效的 Entra ID token。

// 之前:URL 自帶 token
GET https://<tenant>.sharepoint.com/sites/samplesite/_layouts/15/download.aspx?UniqueId=<id>&tempauth=v1.ey...

// 之後:同類 URL 需要
Authorization: Bearer <Entra ID access token>

受影響的 Graph API

API現況形態變更
下載檔案302 轉址不再轉址,直接回傳內容
createUploadSessionbody 內的 uploadUrl變成一般 SharePoint URL,需 SharePoint token
長時間作業(copy)body 內的 monitor URLmonitor URL 需驗證
driveItem: previewbody 內的 getUrl需 SharePoint token
縮圖302 轉址不再轉址,用 Graph token 直接回傳
格式轉換302 轉址不再轉址,直接回傳內容

兩條遷移路徑

路徑 A(一律適用):另外取得 audience 為 https://{tenant}.sharepoint.com 的 Entra ID token,與原本 https://graph.microsoft.com 的 Graph token 並用,並在 app registration 補上對應的 SharePoint Online 權限(例如 Files.Read、Files.ReadWrite)。上傳 session 的每一個 chunk 都要帶這顆 SharePoint token。

POST /drives/{drive-id}/items/{parent-id}:/{filename}:/createUploadSession
Authorization: Bearer {Graph token}

PUT {uploadUrl}
Authorization: Bearer {SharePoint Online token}

路徑 B(選擇性):由 SharePoint 管理員針對特定 app ID 啟用租戶設定,讓 app 繼續收到 Graph URL,沿用既有 Graph token。它只適用第三方 app,且只涵蓋有 Graph URL 替代的 API;繞過 Graph、直接打 SharePoint 的呼叫不受影響。

  • 檢視:Get-SPOTenantPreAuthSettings -UseGraphUrlSettings
  • 啟用:Set-SPOTenantPreAuthSettings -UseGraphUrlIsEnabled $true -UseGraphUrlAppsList <app IDs>
  • 停用:Set-SPOTenantPreAuthSettings -UseGraphUrlIsEnabled $false

公告同時提到,app 清單留空會套用到所有第三方 app,評估後再用;權限依功能分開(Download、UploadSession、Thumbnail),優先順序為 Deny、Allow、IsDisabled。另有一處敘述不一致:開頭說該設定「現在可用」,路徑 B 卻寫「將於後續版本的 SharePoint Online PowerShell 提供」,實際是否已在你的租戶可用,需自行確認。

影響範圍

最先壞掉的是關閉自動轉址、或手動讀 Location header 的 HTTP client:下載與縮圖不再回 302,原本取 Location 再去抓檔的流程會直接失效。其次是把 @microsoft.graph.downloadUrl、@content.downloadUrl 存進資料庫、丟進佇列或轉給前端、第三方服務的系統,這些 URL 之後無法脫離身分單獨使用。再來是用 uploadUrl 分塊上傳、或輪詢 monitor URL 卻沒帶 header 的程式。

公告建議的稽核關鍵字:tempauth=、access_token=、uploadUrl、getUrl、上述兩種 downloadUrl 屬性與 monitor URL。若只是要下載內容,公告也建議改用已直接回傳內容的 driveItem/contentStream,不受此次變更影響。

做 SaaS 或套件的團隊還有一項:公告要求在 2027-04-01 前提早給客戶最低版本的升級指引,因為客戶端舊版本一旦碰到新行為就會失敗。測試時先只對自己的 app ID 開啟路徑 B 設定,並在測試租戶驗證,公告提醒這些設定可能讓正式環境的功能停擺。

原始來源:Microsoft 365 Developer Blog 公告、Set-SPOTenantPreAuthSettings


End of article
0
Would love your thoughts, please comment.x
()
x