已連線應用程式的存取範圍

Tableau Server版本 2022.3 開始,可使用 Tableau 已連線應用程式,代表 Tableau Server 使用者以程式控制方式透過自訂應用程式呼叫和存取 Tableau REST API。對 REST API 的存取可由定義為初始登入請求一部分的 JSON Web 權杖 (JWT) 啟用。JWT 必須包含範圍,該範圍透過已連線應用程式定義可用於自訂應用程式及其使用者的 REST API 方法。

使用已連線應用程式授權對 REST API 的存取可:

  • 增強安全性 - 使用 JWT 作為持有人權杖本質上比透過 .env 檔案在保存庫中儲存和管理管理員使用者密碼更安全
  • 提高效率 — 使用 JWT 作為持有人權杖可以簡化模擬,向登入端點發出一個請求,而不是兩個請求
  • 擴充和自動執行複雜的 Tableau 整合和後端查詢,例如動態內容擷取和進階篩選

範圍動作

已連線應用程式使用的範圍會透過支援 JWT 授權的 REST API 方法授予對內容或管理工作動作的存取權(如下)。範圍是一個以冒號分隔的字串,以命名空間 tableau 開頭,後跟會被授予存取權的 Tableau 資源,例如 datasources,並以允許對資源執行的動作結尾,例如 update

範圍可以執行的動作包括:

  • create
  • read
  • run
  • update
  • download
  • delete

例如,允許自訂應用程式呼叫更新資料來源(連結在新視窗開啟)方法的範圍如下所示:

tableau:datasources:update

範圍類型

您使用的範圍類型取決於要啟用的內容或管理動作。範圍通常屬於以下類型之一:內容讀取、個別、萬用字元和跨類別。

  • 內容閱讀範圍:內容閱讀範圍,tableau:content:read , 為 Tableau 內容啟用可支援的 GET 方法。使用此範圍時,可以跨 REST API 類別啟用動作。更具體地說,使用此範圍可以為資料來源、指標、檢視、工作簿、專案和站台啟用 GET 方法。從 開始,即 Tableau Server 2023.3,您也可以在 JWT 中指定此範圍,該範圍將用於建立與 中繼資料 API(連結在新視窗開啟) 一同使用的認證權杖。

    附註:要為使用者與群組等管理動作啟用 GET 方法,可以使用其各自的範圍。

  • 個別範圍:要啟用可支援的內容和管理動作,可以使用其個別範圍。個別範圍通常與單一方法與 REST API 類別關聯。

    範例:

    • 要啟用發佈或更新資料來源動作,可以分別使用個別 tableau:datasources:create 或者 tableau:datasources:update 範圍。
    • 如果是要新增或移除使用者的管理動作,則可以分別使用個別 tableau:users:create 或者 tableau:users:delete 範圍。

    附註:有一些個別範圍可以跨 REST API 類別啟用動作。例如,tableau:views:download 在檢視資料和工作簿 REST API 類別中啟用動作。

  • 萬用字元範圍:對於某些範圍,則可以使用萬用字元 (*) 取代該動作,以啟用特定 REST API 類別中支援的動作。

    範例:

    • 可以使用 tableau:projects:* 萬用字元範圍啟用專案 REST API 類別中的建立、刪除和更新動作。
    • 可以使用 tableau:users:* 萬用字元範圍啟用使用者 REST API 類別中的獲取/列出、新增、刪除、更新動作。
    • 可以使用 tableau:tasks:* 萬用字元範圍啟用擷取和訂閱 REST API 類別的獲取/列出、新增、刪除、更新和執行動作。此外,此範圍還支援更新資料來源(如果是擷取)和更新工作簿。
  • 跨類別範圍:除了內容讀取範圍外,還有一些額外的範圍,如果使用,可啟用跨不同 REST API 類別支援的動作。

    範例:

    • 如果使用 tableau:tasks:run 範圍,可以啟用資料來源與工作簿 REST API 類別中的動作。
    • 同樣,如果使用 tableau:views:download 範圍,可以啟用檢視資料與和工作簿 REST API 類別中的動作。
    • 如果使用權限範圍,比如 tableau:permissions:update 或者 tableau:permissions:delete,可以啟用資料來源、工作簿和專案 REST API 類別中的動作。

如何授權 REST API 存取的摘要

以下清單總結了透過 JWT 請求存取 REST API 的步驟:

  1. 使用以下方法之一建立已連線應用程式
  2. 產生有效的 JWT — 在執行階段,自訂應用程式將產生有效的 JWT,並設定為已包含的範圍
  3. 發出登入(連結在新視窗開啟)請求 — 自訂應用程式將使用 JWT 發出登入請求,以傳回 Tableau 認證權杖和站台識別碼 (LUID)
  4. 在後續請求中使用 Tableau 認證權杖 — 在後續 REST API 呼叫中,使用 1) Tableau 認證權杖作為 X-Tableau-Auth(連結在新視窗開啟) 標頭值和 2) 請求 URI 中的站台識別碼 (LUID)

範例

例如,假設已使用直接信任建立已連線應用程式。透過直接信任,呼叫 REST API 的自訂應用程式可使用已連線應用程式產生的用戶端 ID 和用戶端密碼產生有效的 JWT。

JWT 中的範圍

要成功授權對 REST API 的存取,JWT 還必須包含定義 REST API 功能的範圍。例如,要啟用各種與資料來源相關的方法,可以在 JWT 中包含以下範圍:

"tableau:content:read","tableau:datasources:create","tableau:datasources:update","tableau:datasources:download","tableau:tasks:run"

或者

"tableau:content:read","tableau:datasources:*","tableau:tasks:run"

附註:範圍值必須作為清單類型傳遞。

登入請求 URI

要呼叫 REST API,自訂應用程式必須首先發出登入請求,以產生 Tableau 認證權杖。

POST https://myco/api/3.17/auth/signin

請求主體

要使用 JWT 授權 REST API 存取,登入請求主體必須包含有效的 JWT,如下例所示。

<tsRequest>
   <credentials jwt="eyJpc3MiOiI4ZTFiNzE3Mi0zOWMzLTRhMzItODg3ZS1mYzJiNDExOWY1NmQiLCJhbGciOiJIUzI1NiIsImtpZCI6ImIwMTE1YmY5LTNhNGItNGM5MS1iMDA5LWNmMGMxNzBiMWE1NiJ9.eyJhdWQiOiJ0YWJsZWF1Iiwic3ViIjoicm1vaGFuQHRhYmxlYXUuY29tIiwic2NwIjpbInRhYmxlYXU6c2l0ZXM6cmVhZCJdLCJpc3MiOiI4ZTFiNzE3Mi0zOWMzLTRhMzItODg3ZS1mYzJiNDExOWY1NmQiLCJleHAiOjE2NDg2Njg0MzksImp0aSI6IjY1ZWFmMmYxLTNmZTgtNDc5Ny1hZmRiLTMyODMzZDVmZGJkYSJ9.mUv2o4gtBTrMVLEXY5XTpzDQTGvfE2LGi-3O2vdGfT8">
    <site contentUrl="mycodotcom"/>
   </credentials>
</tsRequest>

回應主體

登入請求會產生以下回應主體,其中包括 Tableau 認證權杖。

<tsResponse>
   <credentials token="12ab34cd56ef78ab90cd12ef34ab56cd">
    <site id="9a8b7c6d5-e4f3-a2b1-c0d9-e8f7a6b5c4d" contentUrl=""/>
    <user id="9f9e9d9c-8b8a-8f8e-7d7c-7b7a6f6d6e6d" />
   </credentials>
</tsResponse>

產生 Tableau 存取權杖後,將 Tableau 認證權杖新增到所有後續 REST API 請求的標頭中。

標頭

X-Tableau-Auth:12ab34cd56ef78ab90cd12ef34ab56cd

然後,使用 Tableau 存取權杖的所有後續 REST API 請求都受 JWT 中的範圍限制。

支援 JWT 授權的 REST API 方法

以下範圍可以與已連線應用程式相關聯,以定義自訂應用程式可以代表使用者擁有的對 REST API(連結在新視窗開啟) 的存取權和使用方法。

附註:

萬用字元 (*) 範圍

萬用字元範圍使用萬用字元 (*) 而不是特定動作,以在特定 REST API 類別中啟用多個受支援的動作。其中包括:

範圍啟用方法
tableau:datasources:*啟用建立、更新和更新連線資料來源方法。
tableau:metrics:*啟用查詢、更新和刪除指標動作。
tableau:workbooks:*啟用發佈、更新、下載和預覽圖像工作簿動作。
tableau:groups:*啟用建立、查詢、更新和刪除群組動作。
tableau:projects:*啟用建立、刪除和更新專案方法。
tableau:users:*啟用獲取/列出、新增、刪除和更新使用者方法。
tableau:tasks:*

附註:這個範圍也是跨類別的。

啟用擷取和訂閱任務的獲取/列出、新增、刪除和更新和執行方法。

啟用工作簿資料來源的更新方法。

跨類別範圍

跨類別範圍可啟用跨多個 REST API 類別支援的多個動作。其中包括:

範圍啟用方法
tableau:content:read啟用 Tableau 內容的讀取/列出方法,包括資料來源、指標、檢視、工作簿、專案和站台。
tableau:tasks:run啟用資料來源、工作簿和資料擷取的執行方法。
tableau:views:download啟用查看資料和工作簿的下載方法。
tableau:tasks:*

附註:此範圍也是萬用字元。

啟用擷取和訂閱任務的獲取/列出、新增、刪除和更新和執行方法。

啟用工作簿資料來源的更新方法。

個別範圍

方法範圍說明
(沒有範圍的方法)(無)如果在 JWT 中未定義任何範圍,則會拒絕存取 REST API。
登入(無需範圍)讓您以使用者身分登入 Tableau Server 上的指定站台
登出(無需範圍)讓您登出目前工作階段。
(內容讀取範圍)tableau:content:read為 Tableau 內容啟用讀取/列出動作:資料來源、指標、檢視、工作簿和專案。

標籤

  
刪除標籤tableau:labels:delete根據 LUID 刪除資料標籤。
刪除標籤tableau:labels:delete刪除一項或多項資產上的資料標籤。
獲取標籤tableau:labels:read透過其 LUID 獲取資料標籤。
獲取標籤tableau:labels:read顯示有關一項或多項資產上的資料標籤的資訊。
更新標籤tableau:labels:update透過其 LUID 更新標籤。
更新標籤tableau:labels:update在一項或多項資產上建立或更新標籤。

資料來源

  
(全部 tableau:datasources: 方法)tableau:datasources:*啟用建立資料來源、更新資料來源和更新資料來源連線方法。
發佈資料來源tableau:datasources:create將資料來源發佈到站台或將資料附加到現有的已發佈資料來源中。
查詢資料來源tableau:content:read取得有關已發佈資料來源的資訊。
查詢資料來源tableau:content:read取得有關站台上所有已發佈資料來源的資訊。
查詢資料來源連線tableau:content:read取得有關已發佈資料來源的伺服器位址、連接埠、使用者名稱或密碼資訊。
更新資料來源tableau:datasources:update更新資料來源的擁有者、專案或認證狀態。
更新資料來源連線tableau:datasources:update更新資料來源連線的伺服器位址、連接埠、使用者名稱或密碼。
立即更新資料來源tableau:tasks:run執行擷取重新整理。

擷取

  
(全部 tableau:tasks: 方法)tableau:tasks:*啟用資料擷取、訂閱、更新資料來源(對於具有資料擷取的資料來源)和更新工作簿方法的建立、刪除、獲取、列出、執行和更新重新整理動作。
列出站台中的資料擷取重新整理任務tableau:tasks:read列出站台中設定的資料擷取重新整理任務。
執行擷取重新整理任務tableau:tasks:run執行擷取重新整理任務。

流程

  
發佈流程tableau:flows:create發佈流程。

指標

淘汰舊版指標功能

Tableau 的舊版指標功能於 2024 年 2 月在 Tableau Cloud 和 Tableau Server 版本 2024.2 中已淘汰。2023 年 10 月,Tableau 已淘汰在 Tableau Cloud 和 Tableau Server 版本 2023.3 中內嵌舊版指標的功能。借助 Tableau Pulse,我們開發了一種改進的體驗來追蹤指標和對資料提出問題。有關詳細資訊,請參閱使用 Tableau Pulse 建立指標以瞭解新的體驗,以及建立指標並進行疑難排解(已淘汰)以瞭解此淘汰的功能。

(全部 tableau:metrics: 方法)tableau:metrics:*啟用查詢、更新和刪除指標動作。
(全部 tableau:metrics: 方法)tableau:metrics:*啟用查詢、更新和刪除指標動作。
取得指標tableau:content:read取得指標。
刪除指標tableau:metrics:delete刪除指標。
列出指標tableau:content:read取得站台指標清單。
查詢指標資料tableau:metrics:download以逗號分隔值 (.csv) 格式取得指標的基礎資料。
更新指標tableau:metrics:update更新指標的擁有者、專案、暫停狀態和名稱。

訂閱

  
(全部 tableau:tasks: 方法)tableau:tasks:*啟用資料擷取、訂閱、更新資料來源(對於具有資料擷取的資料來源)和更新工作簿方法的建立、刪除、獲取、列出、執行和更新重新整理動作。
建立訂閱tableau:tasks:create建立訂閱。
刪除訂閱tableau:tasks:delete刪除訂閱。
取得訂閱tableau:tasks:read獲取訂閱的詳情。
列出訂閱tableau:tasks:read在站台中列出訂閱。
更新訂閱tableau:tasks:update更新訂閱。

檢視

  
刪除自訂檢視tableau:views:update刪除指定的自訂檢視。
獲取自訂檢視tableau:content:read獲取指定自訂檢視的詳情。
獲取自訂檢視圖像tableau:views:download下載指定自訂檢視的.png 格式圖片檔。
取得檢視tableau:content:read取得有關檢視的詳細資訊。
按路徑取得檢視tableau:content:read使用指定名稱取得站台上所有檢視的詳細資訊。
列出自訂檢視tableau:content:read取得站台中的自訂檢視清單。
查詢檢視資料tableau:views:download取得以逗號分隔值 (.csv) 格式呈現的檢視。
查詢檢視 PDFtableau:views:download以 PDF (.pdf) 檔案的形式取得檢視。
查詢檢視影像tableau:views:download以影像 (.png) 檔案的形式取得檢視。
查詢站台的檢視tableau:content:read取得站台的所有檢視。
查詢站台的檢視。tableau:content:read獲取指定工作簿的所有檢視。
查詢檢視預覽影像tableau:views:download取得檢視的縮圖影像 (.png)。
更新自訂檢視tableau:views:update變更現有自訂檢視的所有者或名稱。

工作簿

  
(全部 tableau:workbooks: 方法)tableau:workbooks:*啟用發佈、更新、下載和預覽圖像工作簿動作。
發佈工作簿tableau:workbooks:create發佈工作簿(.twb 或 .twbx)。
查詢工作簿tableau:content:read取得指定的工作簿及其詳細資訊。
查詢站點的工作簿tableau:content:read取得發佈到站台的工作簿清單。
查詢工作簿預覽影像tableau:workbooks:download取得工作簿的縮圖影像 (.png)。
更新工作簿tableau:workbooks:update修改現有工作簿。
更新工作簿連線tableau:workbooks:update更新連線資訊。
立即更新工作簿tableau:tasks:run在已排程工作之外啟動工作簿重新整理。

發佈

  
附加到檔案上傳tableau:file_uploads:create上傳資料區塊並將其附加到已上傳的資料中 - 在使用「啟動檔案上傳」方法啟動上傳後使用。
啟動檔案上傳tableau:file_uploads:create啟動檔案的上傳流程。

下載

  
下載資料來源tableau:datasources:download下載資料來源 (.tdsx)。
下載檢視交叉表 Exceltableau:views:download從檢視下載包含交叉表資料的 Excel (.xlsx) 檔案。
下載工作簿tableau:workbooks:download下載工作簿(.twb 或 .twbx)。
下載工作簿修訂版tableau:workbooks:download下載特定版本的工作簿(.twb 或 .twbx)。
下載工作簿 PDFtableau:views:download下載包含工作簿中工作表影像的 PDF (.pdf) 檔案。
下載工作簿 PowerPointtableau:views:download下載包含工作簿中工作表投影片的 PowerPoint (.pptx) 檔案。

使用者

  
(全部 tableau:users 方法)tableau:users:*啟用新增、查詢、更新和刪除使用者動作。
將使用者新增到群組tableau:groups:update將使用者新增到群組。
將使用者新增到站點tableau:users:create將使用者新增並指派到站台。
取得群組中的使用者tableau:groups:read取得群組中的使用者清單。
取得站點上的使用者tableau:users:read取得站台上的所有使用者。
查詢站點上的使用者tableau:users:read取得站台上的使用者。
從群組中移除使用者tableau:groups:update從群組中移除使用者。
從站點中移除使用者tableau:users:delete從站台中移除使用者。

群組

  
(全部 tableau:groups: 方法)tableau:groups:*啟用建立、查詢、更新和刪除群組動作。
建立群組tableau:groups:create建立群組。
刪除群組tableau:groups:delete刪除群組。
取得使用者的群組tableau:users:read取得使用者所屬的群組清單。
查詢群組tableau:groups:read取得站台中的群組清單。
更新群組tableau:groups:update更新群組。

專案

  
(全部 tableau:projects: 方法)tableau:projects:*啟用建立、更新和刪除專案動作。
建立專案tableau:projects:create建立專案。
刪除專案tableau:projects:delete刪除專案。
查詢專案tableau:content:read取得專案清單。
更新專案tableau:projects:update更新專案的名稱、說明或專案階層架構。

權限

  
(全部 tableau:permissions: 方法)tableau:permissions:*啟用新增、查詢、更新、刪除權限動作。
新增資料來源權限tableau:permissions:update為 Tableau Server 使用者或群組新增對資料來源的權限。
新增預設權限tableau:permissions:update向使用者或群組新增對專案中的指標、流程、工作簿、資料來源、資料角色或濾鏡資源的預設權限功能。
新增專案權限tableau:permissions:update為使用者或群組新增專案權限
新增檢視權限tableau:permissions:update為使用者或群組新增檢視權限。
新增工作簿權限tableau:permissions:update為使用者或群組新增對指定工作簿的權限。
刪除資料來源權限tableau:permissions:delete刪除使用者或群組對專案中的指標、流程、工作簿、資料來源、資料角色或濾鏡資源的預設權限功能。
刪除預設權限tableau:permissions:delete刪除使用者或群組對專案中的指標、流程、工作簿、資料來源、資料角色或濾鏡資源的預設權限功能。
刪除專案權限tableau:permissions:delete刪除使用者或群組的專案權限。
刪除檢視權限tableau:permissions:delete刪除使用者或群組的檢視權限。
刪除工作簿權限tableau:permissions:delete刪除使用者或群組的工作簿權限。
查詢資料來源權限tableau:permissions:read取得資料來源的權限清單。
查詢預設權限tableau:permissions:read取得使用者和群組對指標、工作簿和資料來源的預設權限功能。
查詢專案權限tableau:permissions:read取得專案的權限清單。
查詢檢視權限tableau:permissions:read取得檢視的權限清單。
查詢工作簿權限tableau:permissions:read取得工作簿的權限清單。

站台

  
(全部 tableau:sites: 方法)tableau:sites:*啟用建立、查詢、更新和刪除站台動作。
建立站台tableau:sites:create在 Tableau Server 上建立站台。
取得最近檢視的站點tableau:content:read取得登入使用者最近建立、更新或存取的檢視和工作簿詳細資訊。
查詢站點tableau:sites:read列出 Tableau Server 上的所有站台。
查詢站台的檢視tableau:content:read列出站台上的所有檢視
更新站點tableau:sites:update更新站台

權限範圍疑難排解

401001 - 登入錯誤

如果遇到錯誤 401001,登入回應主體將附加以下特定於連線的應用程式附加錯誤程式碼之一:16、10084 或 10085。

例如,在以下回應主體中,「10084」是連線的應用程式錯誤程式碼,可以使用它來幫助解決使用 JWT 進行 REST API 授權登入至 Tableau Server 的問題。

<error code="401001">  
  "summary": "Signin Error",
  "detail": "Error signing in to Tableau Cloud (10084)"
</error>

為幫助解決問題,請參閱適用的錯誤程式碼及其潛在原因的描述。

  • 16:找不到使用者 — 這個錯誤可能是因為不正確的「sub」(使用者名稱)已指定

  • 10084:無法解析存取權杖 — 出現此錯誤的原因可能如下:

    • JWT 無效或出現意外問題
    • 指定不正確「aud」(觀眾)
    • 對於直接信任,簽署密碼時出現問題
  • 10085:無法獲取密碼以驗證用戶端識別碼的簽署 — 出現此錯誤的原因可能如下:

    • 指定「iss」中不正確的用戶端識別碼
    • 對於直接信任,指定不正確的「kid」(密碼識別碼)
    • 對於EAS,無法從 JWKSource 獲取金鑰

401002 - 未經授權的存取錯誤

如果遇到錯誤 401002 並且已確認您具有發出請求的適當權限,請確保 JWT 中包含的權限範圍是正確的,並且與您嘗試做出的請求相符。有關端點和支援權限範圍的清單,請參閱上方支援 JWT 授權的 REST API 方法區段。

感謝您的意見反應!已成功提交您的意見回饋。謝謝!