為 OpenID Connect 設定 Tableau Server

本主題會介紹如何設定 Tableau Server,以使用 OpenID Connect (OIDC) 進行單一登入 (SSO)。這是多個步驟過程中的一步。以下主題會提供有關在 Tableau Server 中設定和使用 OIDC 的資訊。

  1. OpenID Connect 概觀

  2. 針對 OpenID Connect 設定身分識別提供者

  3. 為 OpenID Connect 設定 Tableau Server(您在此處)

  4. 使用 OpenID Connect 登入到 Tableau Server

附註:

  1. 在瀏覽器中開啟 TSM:

    https://<tsm-computer-name>:8850。有關詳情,請參閱登入到 Tableau 服務管理員 Web UI

  2. CONFIGURATION索引標籤上,選取使用者身分和存取>驗證方法

  3. [驗證方法] 下的下拉式功能表中選取 [OpenID Connect]

  4. 在 [OpenID Connect] 下,選取 [為伺服器啟用 OpenID 驗證]

  5. 輸入組織的 OpenID 設定資訊:

    TSM 中的 OpenID 連線設定影像

    附註:

    • 對於 步驟 3:若提供者依賴本機電腦上託管的設定檔(而不是公共 URL 上託管的檔案),可以使用 tsm authentication openid <commands> 指定檔案。使用 --metadata-file <file_path> 選項指定本機 IdP 組態檔。

    • 對於步驟 4:從 Tableau Server 2025.3 開始,可以啟用單一登出 (SLO),並指定使用者登出後對其進行重新導向的 URL。

    • 對於步驟 5: 從 Tableau Server 2026.2 開始,可以啟用使用者屬性及其功能作為 OIDC 驗證工作流程的一部分。有關詳情,請參閱 OIDC 宣告中的使用者屬性

  6. 輸入設定資訊後,按一下 [儲存暫止的變更]

  7. 按一下頁首的 [暫止的變更]

    Tableau Server 管理員工具列,表示存在暫止的變更。

  8. 按一下 [套用變更並重新啟動]

此部分中的過程描述如何使用 TSM 命令列介面來設定 OpenID Connect。您也可以使用組態檔來進行 OpenID Connect 的初始設定。請參閱openIDSettings 實體

  1. 使用tsm authentication openid <commands>configure 命令設定以下必需選項:

    • --client-id <id>:指定 IdP 已指派給您的應用程式的提供者用戶端 ID。例如,“xxxkjwdlnaoiloadjkwha"

    • --client-secret <secret>:指定提供者用戶端密碼。這是 Tableau 用於驗證來自 IdP 的響應的真實性的權杖。此值是密碼,應妥善保管。例如,“xxxhfkjaw72123="

    • --config-url <url>--metadata-file <file_path>:指定提供者組態 json 檔案的位置。若提供者託管公共 JSON 探索檔案,則使用 --config-url。否則,請改為指定本機電腦上的一個路徑,並為 --metadata-file 指定檔案名。

    • --return-url <url>:伺服器的 URL。這通常是您的伺服器的公共名稱,例如 "http://example.tableau.com".

    例如,執行以下命令:

    tsm authentication openid configure --client-id “xxxkjwdlnaoiloadjkwha" --client-secret “xxxhfkjaw72123=" --config-url "https://example.com/openid-configuration" --return-url "http://tableau.example.com"

    附註: 

  2. 鍵入以下命令以啟用 Open ID Connect:

    tsm authentication openid enable

  3. 執行 tsm pending-changes apply 以套用變更。

    如果擱置組態需要重新啟動伺服器,pending-changes apply 命令將顯示提示,讓您知道即將重新啟動。即使伺服器已停止,也會顯示提示,但在這種情況下不會重新啟動。您可以使用 --ignore-prompt 選項隱藏提示,但這樣做不會改變重新啟動行為。如果變更不需要重新啟動,則不會出現提示即可套用變更。有關詳情,請參閱 tsm pending-changes apply

設定 OpenID 以使用正向 Proxy

預設情況下,Tableau Server 會忽略 Proxy 設定並將所有 OpenID 請求直接傳送到 IdP。

從 Tableau Server 2021.2.2 和更高版本開始,若 Tableau 設定為使用正向 Proxy 連線到網際網路,則您可以將 Tableau Server 設定為使用 Proxy 主機和連接埠設定來聯絡 OpenID IdP。

設定 Tableau Server 的方式因您在組織中實作正向 Proxy 的方式而異:

  • 會在執行 Tableau Server 的 Windows 電腦上設定正向 Proxy 。
  • Tableau Server 會將所有出站流量直接傳送到組織中執行的正向 Proxy 伺服器。

Windows 系統 Proxy 設定

若您的組織已在每台 Windows 電腦上設定正向 Proxy ,請使用此方法為 Tableau Server 上的 OpenID 使用系統 Proxy 設定。執行以下命令:

tsm configuration set -k tomcat.useSystemProxies -v true
tsm pending-changes apply

正向 Proxy 伺服器

使用命令 tsm configuration set 進行變更。

  • 對於 HTTPS Proxy 主機,請使用以下金鑰值組:

    -k tomcat.https.proxyHost -v host.domain

    -k tomcat.https.proxyPort -v port_number

    例如,若您的 Proxy 伺服器位於 https://proxy.example.lan:8443,則執行以下命令:

    tsm configuration set -k tomcat.https.proxyHost -v proxy.example.lan
    tsm configuration set -k tomcat.https.proxyPort -v 8443
    tsm pending-changes apply
  • 對於 HTTP Proxy 主機,請使用以下金鑰值組:

    -k tomcat.http.proxyHost -v host.domain

    -k tomcat.http.proxyPort -v port_number

    設定這些金鑰後,執行 tsm pending-changes apply

使用使用者屬性自訂和控制資料存取

使用者屬性是由您的組織定義的使用者中繼資料。使用者屬性可用於在典型的基於屬性的存取控制 (ABAC) 授權模型中確定存取權。使用者屬性可以是使使用者個人資料的任何方面,包括職位角色、部門成員資格、管理層級等。它們也可能與執行階段使用者內容相關聯,例如使用者的登入位置或其語言喜好設定。

透過在工作流程中包含使用者屬性,可以透過資料存取和個人化來控制和自訂使用者體驗。

  • 資料存取:使用者屬性可用於強制執行資料安全性原則。這確保使用者只能看到他們被授權查看的資訊。
  • 個人化:透過傳遞位置和角色等使用者屬性,可以自訂內容以僅顯示與存取內容的使用者相關的資訊,從而讓他們能夠更輕鬆地找到所需的資訊。

傳遞使用者屬性的步驟摘要

在工作流程中啟用使用者屬性的流程總結如下:

  1. 啟用使用者屬性設定
  2. 在聲明中包含使用者屬性
  3. 確保內容作者包含使用者屬性函數和相關篩選器
  4. 檢閱內容

步驟 1:啟用使用者屬性設定

出於安全性目的,僅當伺服器管理員啟用使用者屬性設定時,才會在驗證工作流程中驗證使用者屬性。

  1. 在瀏覽器中開啟 TSM:

    https://<tsm-computer-name>:8850。有關詳情,請參閱登入到 Tableau 服務管理員 Web UI

  2. 「設定」索引標籤上,選取「使用者身分和存取」>「驗證方法」

  3. 「驗證方法」下的下拉式功能表中選取「SAML」

  4. 步驟 8下,選取「在 SAML 驗證期間啟用使用者屬性擷取」核取方塊。

  5. 完成後,請執行以下操作:

    1. 按一下「儲存暫止的變更」

    2. 按一下頁首的 「擱置的變更」

    3. 按一下 「套用變更並重新啟動」

步驟 2:在聲明中包含使用者屬性

確保聲明包含使用者屬性。

附註:SAML 回應中的屬性受 4096 個字元限制的限制,scpscope 屬性除外。如果回應中的屬性(包括使用者屬性)超過此限制,Tableau 會刪除屬性並改為傳遞 ExtraAttributesRemoved 屬性。然後,內容作者可以使用 ExtraAttributesRemoved 屬性建立計算,以確定在偵測到該屬性時如何向使用者顯示內容。

範例

假設您有一位員工 Fred Suzuki,他是南部區域的經理。您想要確保 Fred 在檢閱報告時,只能看到南部區域的資料。在這種情況下,可以在 SAML 回應中包括「區域使用者」屬性,如下面的範例中所示。

<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
	<saml;Issuer">https://myidp.okta.com/saml</saml:Issuer">
   <saml;Subject">
	  <saml:NameId Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"fsuzuki@example.com</saml:NameID">
   <saml:AttributeStatement xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
  		<saml:Attribute Name="Region" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  			<saml:AttributeValue">South</saml:AttributeValue">
    	</saml:Attribute">
   </saml:AttributeStatement">
</saml:Assertion">

步驟 3:確保內容作者包含屬性函數

確保內容作者包含使用者屬性函數和相關篩選器,以控制內容中可以顯示哪些資料。要確保將使用者屬性判斷提示傳遞給 Tableau,內容必須包含以下使用者屬性函數之一:

  • USERATTRIBUTE('attribute_name')
  • USERATTRIBUTEINCLUDES('attribute_name', 'expected_value')

內容作者使用的函數取決於使用者屬性預期傳回的是單一值還是多個值。有關這些函數和每個函數範例的詳細資訊,請參閱 Tableau 說明中的使用者函數(連結在新視窗開啟)

附註:

  • 在 Tableau Desktop 或 Tableau Cloud 中製作時,無法預覽包含這些函數的內容。函數將傳回 NULL 或 FALSE。為確保使用者函數按預期運作,我們建議作者在提供內容後檢閱這些函數。
  • 為確保內容按預期呈現,內容作者可以考慮包含一個使用 ExtraAttributesRemoved 的計算,該屬性可 1) 檢查是否存在此屬性,以及 2) 若存在此屬性,則確定如何處理內容,例如顯示訊息。只有 SAML XML 中的屬性超過 4096 個字元時,Tableau 才會新增 ExtraAttributesRemoved 屬性並移除所有其他屬性(scpscope 除外)。這樣做是為了確保最佳效能並遵守儲存限制。

範例

接續上方步驟 2:在聲明中包含使用者屬性中介紹的範例,要將「區域」使用者屬性聲明傳遞給工作簿,作者可以包含 USERATTRIBUTEINCLUDES。例如,USERATTRIBUTEINCLUDES('Region', [Region]) 中,「Region(區域)」是使用者屬性,「[Region](區域)」是資料中的一欄。使用此新計算,作者可以建立一個包含經理和銷售資料的資料表。新增計算後,工作簿會按預期傳回「False」值。

要僅在內嵌工作簿中顯示與南部區域關聯的資料,作者可以建立一個篩選器,並將其自訂為南部區域為「True」時顯示值。套用篩選器後,工作簿會按預期變為空白,因為函數傳回「False」值,並且篩選器已自訂為僅顯示「True」值。

步驟 4:檢閱內容

檢閱並驗證內容。

範例

完成上面步驟 3:確保內容作者包含屬性函數中的範例後,您可以看到檢視中的銷售資料已針對 Fred Suzuki 進行自訂,因為他的使用者內容是南部區域。

工作簿中顯示的區域的經理應該會看到與其區域關聯的值。例如,西部區域的 Sawdie Pawthorne 會看到特定於其區域的資料。

工作簿中未顯示其區域的經理會看到一個空白工作簿。

已知問題和限制

使用使用者屬性函數時,應考慮一些已知問題和限制。

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