SAML 要求

在 Tableau Server 上設定 SAML 之前,確保您的環境滿足要求。

重要提示:IdP 和 Tableau Server 上的 SAML 設定均區分大小寫。例如,使用 IdP 設定的和在 Tableau Server 上設定的 URL 必須完全相符。

憑證和身分識別提供者 (IdP) 要求

若要將 Tableau Server 設定為使用 SAML,您需要以下內容:

  • 憑證檔案。PEM 編碼的 x509 憑證檔案,副檔案名為 .crt。此檔案由 Tableau Server 而不是 IdP 使用。如果有 SSL 憑證,在某些情況下您可以將同一個憑證與 SAML 一起使用。有關詳情,請參閱本文後面的針對 SAML 使用 SSL 憑證和金鑰檔案

    Tableau Server 需要憑證金鑰對,以簽署傳送至 IdP 的要求。這樣會減少中間人攻擊的威脅,提高假冒簽署要求的難度。此外,Tableau Server 會驗證它從受信任的 IdP 接收的 AuthNResponse。Tableau Server 使用 IdP 產生的簽章來驗證 AuthNResponse。IdP 憑證中繼資料會作為初始 SAML 設定程序的一部分提供給 Tableau Server。

    並非所有 IdP 都需要簽署要求。預設情況下,Tableau Server 需要已簽署的要求。建議使用此組態,確保與 IdP 間的通訊傳輸更安全。請與您的 IdP 團隊合作,瞭解是否需要停用已簽署的要求。若要停用已簽署的要求,請參閱 samlSettings 實體

  • 簽章演算法。憑證必須使用安全簽章演算法,例如 SHA-256。若嘗試用使用 SHA-1 簽章雜湊的憑證為 SAML 設定 Tableau Server,則 Tableau Server 將拒絕該憑證。可以透過設定 TSM wgserver.saml.blocklisted_digest_algorithms組態金鑰,將 Tableau Server 設定為接受安全性較低的 SHA-1 雜湊。

  • RSA 金鑰和 ECDSA 曲線大小。Tableau Server 憑證的 RSA 金鑰強度必須為 2048,而 IdP 憑證的 RSA 金鑰強度必須為 2048 或 ECDSA 曲線大小必須為 256。

    可以透過設定相應的組態金鑰來將 Tableau Server 設定為接受安全性較低的大小,wgserver.saml.min_allowed.rsa_key_sizewgserver.saml.min_allowed.elliptic_curve_size

  • 憑證金鑰檔案。一個 RSA 或 DSA 私密金鑰檔案有.key副檔名。RSA 金鑰必須為 PKCS#1 或者 PKCS#8 格式。

    密碼保護需求如下:

    • PKCS#1 RSA 金鑰檔案無法受密碼保護。
    • 若要使用受密碼保護的金鑰檔案,您必須使用 RSA PKCS#8 檔案設定 SAML。附註:不支援具有 null 密碼的 PKCS#8 檔案。

    • 特定於網站的 SAML 部署中不支援受密碼保護的金鑰檔案。

    支援概觀

    金鑰檔案格式伺服器範圍 SAML 支援站台層級 SAML 支援
    PKCS#8 RSA
    PKCS#8(無/空密碼)
    PKCS#1 RSA
    PKCS#1 RSA(密碼)
    PKCS#1 DSA(密碼)
  • IdP 必須使用安全的簽章演算法對 SAML 判斷提示進行簽章。預設情況下,Tableau Server 將拒絕使用 SHA-1 演算法簽章的 SAML 判斷提示。可以透過設定 TSM wgserver.saml.blocklisted_digest_algorithms組態金鑰,將 Tableau Server 設定為接受安全性較低的 SHA-1 雜湊簽署的宣告。

  • 支援 SAML 2.0 或更后版本的 IdP 帳戶。您需要一個外部身分識別提供者帳戶。一些範例包括 PingFederate、SiteMinder 和 Open AM。

  • 支援匯入和匯出 XML 中繼資料的 IdP 提供程式。儘管手動建立的中繼資料檔案可以工作,但 Tableau 技術支援無法協助進行組建該檔案或排除其問題。

  • 使用者名稱:必需。IdP 設定必須包含「username」屬性或宣告,並且 Tableau Server 上的相應 SAML 組態屬性也必須設定為「username」。

SSL 卸載

如果您的組織在傳送驗證要求至 Tableau Server 之前,在 Proxy 伺服器終止 IdP 的 SSL 連線,則您可能需要進行 Proxy 設定。在這個情況下,SSL 是從 Proxy伺服器「卸載」,也就是說,https 請求已在 Proxy 伺服器端終止,然後透過 http 轉送到 Tableau Server。

Tableau Server 會驗證從 IdP 傳回的 SAML 回應訊息。由於 SSL 是在 Proxy 卸載,因此 Tableau Server 會驗證接收的通訊協定 (http),但 IdP 回應是採用 https 格式,因此,除非您的 Proxy 伺服器包含設定為 https 的 X-Forwarded-Proto 標頭,否則驗證將會失敗。請參閱將 Tableau Server 設定為使用反向 Proxy 伺服器和/或負載平衡器

針對 SAML 使用 SSL 憑證和金鑰檔案

如果將 PEM 編碼的 x509 憑證檔案用於 SSL,則可以將同一個檔案用於 SAML。對於 SSL,憑證檔案用於加密流量。對於 SAML,憑證用於進行驗證。

除了上面的憑證和身分識別提供者 (IdP) 要求中列出的需求外,若 SSL 和 SAML 要使用相同的憑證,憑證還必須滿足以下條件才能用於 SAML:

  • 確認憑證僅包含適用於 Tableau Server 的憑證,而不包含任何其他憑證或金鑰。

    為此,您可以建立憑證檔案的備份副本,然後在文字編輯器中開啟該副本以檢視其內容。

使用者管理要求

啟用 SAML 時,使用者驗證會在 Tableau 外部由 IdP 執行。但是,使用者管理是由以下識別身份存放區執行:外部識別身份存放區(Active Directory 或 LDAP)或本機識別身份存放區中的 Tableau Server。有關透過 Tableau Server 規劃使用者管理的詳情,請參閱身分存放區

在安裝期間設定識別身份存放區時,您必須選取能反映所需 SAML 使用方式的選項。請注意,如果要使用站台特定的 SAML,必須在設定個別站台之前,先設定全伺服器範圍的 SAML。

  • 站台專屬的 SAML:如果 Tableau Server 上有多個站台,且您希望為特定 IdP 或 IdP 應用程式設定各個站台(或將某些站台設定為不使用 SAML),請將 Tableau Server 設定為透過本機識別身分存放區管理使用者。對於特定於網站的 SAML,Tableau Server 依靠 IdP 進行驗證,並且不使用密碼。

  • 伺服器範圍的 SAML:如果要設定具有單一 IdP 的伺服器範圍 SAML,您可以將 Tableau Server 設定為使用本機身分存放區或外部身分存放區。

  • 對於伺服器範圍的 SAML 驗證和站台特定的 SAML 驗證:

    • 使用本機身分存放區時,使用具有電子郵件地址格式的使用者名稱非常重要。使用完整的電子郵件地址可說明保證使用者名稱在 Tableau Server 中的唯一性,即使兩個使用者具有相同電子郵件前置但位於不同的電子郵件網域上也是如此。為了確保身分的唯一性,請在兩個系統中利用完整的電子郵件地址格式,或者將 Tableau Server 升級到版本 2022.1.x 或更高版本並執行 身份移轉背景工作。

    • 在多站台環境中,所有使用者都會透過在站台層級設定的 SAML IdP 進行驗證。在此案例中,您會為屬於多站點的使用者指定全伺服器的預設 SAML IdP。若要設定此案例,必須透過本機識別身份存放區設定 Tableau Server。

    • 配對 SAML 使用者名稱屬性時忽略網域。從 Tableau Server 版本 2021.4.21、2022.1.17、2022.3.9 和 2023.1.5 開始,可以將 Tableau Server 設定為在配對識別提供者 (IdP) 使用者名稱與在 Tableau Server 上使用者帳戶時忽略使用者名稱屬性的網域部分。例如,IdP 中的使用者名稱屬性可能為 alice@example.com,要配對至 Tableau Server 中一個名為 alice 的使用者。如果已在 Tableau Server 中定義與使用者名稱屬性的前置部分相符但與使用者名稱屬性的網域部分不相符的使用者名稱,則忽略使用者名稱屬性的網域部分可能會很實用。

      重要資訊:在未採取預防措施的情況下,我們不建議忽略網域名稱。具體來說,請驗證使用者名在您在 IdP 中建立的已設定域中是否唯一。將 Tableau Server 設定為忽略網域名稱可能會導致使用者意外登入。請將 IdP 已設定為多個網域的情況列入考量(例如,example.comtableau.com)。如果兩個使用者在您的組織中具有相同的名字,但使用者帳戶不同(例如,alice@tableau.comalice@example.com),那麼可能會遇到對應不相符的情況。

      若要將 Tableau Server 設定為忽略 IdP 使用者名稱屬性中的網域名稱,請將 wgserver.ignore_domain_in_username_for_matching 設定為 true。有關詳情,請參閱 wgserver.ignore_domain_in_username_for_matching

      附註:

      • 此命令僅適用於 legacy-identity-mode 中的 Tableau Server 部署,或尚未透過身分移轉(連結在新視窗開啟)更新為使用身分服務的部署。
      • 變更 TSM 命令以忽略使用者名稱屬性中的網域名稱時,Tableau Server 中的所有使用者名稱都必須具有網域名稱。

附註:REST APItabcmd 不支援 SAML 單一登入 (SSO)。若要登入,您必須指定已在伺服器上建立的使用者的名稱和密碼。視您設定 Tableau Server 的方式而定,使用者可能會由本機識別身份存放區或外部識別身份存放區管理。REST API 或 tabcmd 調用將具有您在登入時使用的使用者的權限。

SAML 相容性說明和要求

  • 相符的使用者名稱:儲存在 Tableau Server 中的使用者名稱必須與 SAML 判斷提示中 IdP 設定的使用者名稱相符。預設情況下,Tableau Server 期望傳入的判斷提示包含名為「使用者名稱」的屬性,以及該使用者的資訊。舉例來說,如果 Jane Smith 的使用者名在 PingFederate 中存儲為 jsmith,那麼它在 Tableau Server 中也必須存儲為 jsmith

    在身份驗證期間設定 SAML

    如果要在初始 Tableau Server 設定過程中設定 SAML,請在執行安裝程式之前確保您的 IdP 存在排程使用的帳戶。在 Tableau Server 設定過程中,您將建立伺服器管理員帳戶。

    執行多個網域

    如果您使用 Active Directory 或 LDAP 外部識別身份存放區,並且在多個網域中執行(亦即使用者屬於多個網域,或您的 Tableau Server 安裝包括多個網域),則 IdP 必須為使用者在判斷提示中傳送使用者的使用者名稱網域屬性。這些使用者名稱和網域屬性都必須與 Tableau Server 中儲存的使用者名稱和網域完全相符。執行以下其中一項動作:

    • 在使用者名稱欄位設定 domain\username
    • 在網域欄位中設定望月,並在使用者名稱欄位中設定設置使用者名稱

    設定網域屬性時,可以使用完整網域名稱 (FQDN) 或簡短名稱。

    如果未指定網域,則將其視為預設網域。

    詳細資訊,請參閱 支援多個域設定全伺服器的 SAML使用 TSM CLI 索引標籤中的「相符聲明」區段。

  • 簽章演算法:Tableau Server 會使用 SHA256 簽章演算法。

  • 單一登出 (SLO): Tableau Server 支援服務提供者 (SP) 啟動的 SLO 和身分識別提供者 (IdP) 啟動的 SLO,用於伺服器範圍的 SAML 和站點特定的 SAML。

  • 外部驗證類型:Tableau Server 支援一次使用一種外部驗證類型。

  • 相互 SSL:Tableau Server 不同時支援相互 SSL(雙向 SSL)和 SAML。如果要使用相互 SSL,您可以在 IdP 上對其進行設定。

  • 判斷提示編碼:判斷提示必須採用 UTF-8 編碼。

  • 加密與 SAML 判斷提示

    • 伺服器範圍內的 SAML:為伺服器範圍內的 SAML 設定 Tableau Server 後,Tableau Server 支援來自 IdP 的加密判斷提示。作為伺服器範圍內 SAML 的初始設定的一部分,您上載的憑證會啟用加密判斷提示。SAML 請求與回應可以透過 HTTP 或 HTTPS 傳送。

    • 具體站台的 SAML:為具體站台的 SAML 設定 Tableau Server 後,Tableau Server 不支援來自 IdP 的加密判斷提示。但是,所有 SAML 請求和回應都會透過 HTTPS 傳送,以確保與 IdP 的通訊安全。不支援 HTTP 請求與回應。

  • Tableau Server 中適用於 tabcmd 使用者的使用者識別:如上面的使用者管理要求部分中所述,若要使用 tabcmd,您必須以伺服器上定義的使用者身分登入。您不能將 SAML 帳戶與 tabcmd 一起使用。

  • 在 Tableau Desktop 中使用 SAML SSO:預設情況下,Tableau Desktop 允許 SP 啟動的 SAML 驗證。

    如果您的 IdP 不支援此功能,您可以使用以下命令為 Tableau Desktop 停用 SAML 登入:

    tsm authentication saml configure --desktop-access disable

    有關詳情,請參閱 tsm authentication saml <commands>

  • 分散式安裝:TSM 版本的 Tableau Server (2018.2 及更新版本)會使用 Client File Service 在多節點叢集中共用檔案。在叢集中的初始節點上設定 SAML 後,Client File Service 會將憑證和金鑰檔案分發給其他節點。

  • 登入 URL:為了使使用者能夠登入,您的 IdP 必須設定為具有可將 POST 請求傳送到以下 URL 的 SAML 登入端點:

    https://<tableauserver>/wg/saml/SSO/index.html

  • 登出 URL:為了使使用者能夠在使用 SAML 登入後登出(單一登出,或 SLO),您的 IdP 必須設定為具有可將 POST 請求傳送到以下 URL 的 SAML 登出端點:

    https://<tableauserver>/wg/saml/SingleLogout/index.html

    附註: Tableau Server 支援服務提供者 (SP) 啟動的 SLO 和身分識別提供者 (IdP) 啟動的 SLO,用於伺服器範圍的 SAML 和站點特定的 SAML。

  • 登出後重定義 URL:預設情況下,當使用者登出 Tableau Server 時,將顯示登入頁面。 

    若要在登出後顯示其他頁面,請帶 -su--signout-url 選項使用 tsm authentication saml configure 命令。

    • 若要指定絕對 URL,請使用以 http://https:// 開頭的完全限定的 URL,如此範例中所示:

      tsm authentication saml configure -su https://example.com

    • 若要指定相對於 Tableau Server 主機的 URL,請使用以 /(斜杠)開頭的頁面:

      tsm authentication saml configure -su /ourlogoutpage.html

  • Active Directory 聯合服務 (AD FS):您必須設定 AD FS 以返回使用 SAML 的 Tableau 驗證的其他屬性。Name IDusername 屬性可對應到相同的 AD 屬性:SAM 帳戶名稱

  • AuthNContextClassRef:AuthNContextClassRef 是可選的 SAML 屬性,用於強制驗證 IdP 啟動流程中的某些身份驗證「內容」。您可以使用 TSM 為此屬性設定逗號分隔值。設定此屬性後,Tableau Server 會驗證 SAML 回應是否至少包含列出的值之一。如果 SAML 回應不包含設定的值之一,就算使用者已成功使用 IdP 進行驗證,也會遭到拒絕。

    將此可選屬性留空將導致預設行為:任何成功經過驗證的 SAML 回應都將導致使用者在 Tableau Server 中獲得工作階段。

    此值僅為全伺服器 SAML 接受評估。如果設定了 site-SAML,則會忽略 AuthNContextClassRef 屬性。

    若要使用 TSM Web 介面設定這個值,請參閱設定全伺服器的 SAML

    若要搭配 tsm configuration set 使用此值,請使用金鑰,wgserver.saml.authcontexts,來設定逗號分隔的值清單。

    若要使用 JSON 組態檔。設定這個值,請參閱 samlSettings 實體

將 SAML SSO 用於 Tableau 用戶端應用程式

Tableau Server 使用者(具有 SAML 認證)可從 Tableau Desktop 或 Tableau Mobile 應用登入到伺服器。為了全面相容,我們建議 Tableau 用戶端應用程式版本與伺服器的版本相符。若要使用特定於網站的 SAML 進行連線,使用者必須執行 Tableau 用戶端應用程式版本 10.0 或更高版本。

從 Tableau Desktop 或 Tableau Mobile 連線到 Tableau Server 時,將使用服務提供者 (SP) 發起的連線。

將經過驗證的使用者重定向回 Tableau 用戶端

使用者登入到 Tableau Server 時,Tableau Server 會向 IdP 傳送一個 SAML 請求 (AuthnRequest),其中包括 Tableau 應用程式的 RelayState 值。如果使用者已透過諸如 Tableau Desktop 或 Tableau Mobile 等 Tableau 用戶端登入到 Tableau Server,則在 IdP 對 Tableau 的 SAML 回應內返回 RelayState 值至關重要。

如果在此情形下未正確返回 RelayState 值,則會在 Web 瀏覽器中將使用者轉向其 Tableau Server 首頁,而不是重定向回他們從中登入的應用程式。

與身分識別 提供者和內部 IT 團隊合作,確認此值將包括在 IdP 的 SAML 回應內,然後由位於 IdP 和 Tableau Server 之間的任何網路設備(例如 Proxy 或負載平衡器)保留。

XML 資料要求

在 SAML 設定過程中,您會在 Tableau Server 和 IdP 之間交換 XML 中繼資料。此 XML 中繼資料用於在使用者啟動 Tableau Server 登入過程時驗證使用者的驗證資訊。

Tableau Server 和 IdP 都各自會組建自己的中繼資料。每群組中繼資料都必須包含以下清單中描述的資訊。如果任何一組中繼資料缺少資訊,則在您設定 SAML 或在使用者嘗試登入時可能會發生錯誤。

  • HTTP POST 與 HTTP REDIRECT:Tableau Server 支援 SAML 通訊的 HTTP POST 和 HTTP REDIRECT 請求。在由 IdP 匯出的 SAML 中繼資料 XML 文件中,可將 Binding 屬性設定為 HTTP-POST 或 HTTP-REDIRECT。

  • Binding 屬性設定為 HTTP-POST 後,Tableau Server 與 IdP 每次匯出的 SAML 中繼資料必須包含以下元素。

    • 指定驗證成功後要將 IdP 重新導向至哪個 URL。在服務提供者中繼資料中必須執行此作業,身分識別提供者中繼資料則不需要。

      <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://<tableau-server>/wg/saml/SSO/index.html index="0" isDefault="true"/>

      針對網站 SAML,Location 端點為 /samlservice/public/sp/metadata?alias=<site alias>

    • 此登出端點元素會出現在 Tableau Server 中繼資料中,並指定 IdP 將用於 Tableau Server 登出端點的 URL。如果此元素不在 IdP 中繼資料中,Tableau Server 便無法與 IdP 交涉登出端點,且 SAML 登出功能無法在 Tableau Server 中使用:

      <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/slo"

    • 確認您從 IdP 獲得的中繼資料 XML 是否包括繫結設定為 HTTP-POSTSingleSignOnService 元素,如以下範例中所示:

      <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/SSO.saml2"/>

    • 此元素會出現在 IdP 中繼資料中,並指定 Tableau Server 將用於 IdP 登出端點的 URL:

      <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://SERVER-NAME:9031/idp/slo"/>

  • 名為 username 的屬性:您必須設定 IdP 以返回在 saml:AttributeStatement 元素中包括 username 屬性的聲明。聲明的屬性類型必須為 xs:string應將其鍵入為 xs:any)。

    以下範例顯示此項可能的樣子。

    <saml:Assertion assertion-element-attributes>
      <saml:Issuer>issuer-information</saml:Issuer>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        ...
      </Signature>
      <saml:Subject>
        ...
      </saml:Subject>
      <saml:Conditions condition-attributes >
        ...
      </saml:Conditions>
      <saml:AuthnStatement authn-statement-attributes >
        ...
      </saml:AuthnStatement>
    
      <saml:AttributeStatement>
        <saml:Attribute Name="username" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
              user-name
        </saml:AttributeValue>
        </saml:Attribute>
      </saml:AttributeStatement>
    </saml:Assertion>

    預設情況下,Tableau Server 會讀取 IdP 傳回之 AuthNResponse 中的 username 屬性。但是,某些 IdP 可能會傳回用來識別使用者的不同屬性。

    若要變更傳遞 username 值的 SAML 屬性,請執行以下 TSM 命令:

    tsm authentication saml map-assertions --user-name <USER-NAME>

    請參閱 tsm authentication

  • 使用 SAML 聲明的動態群組成員身分:

    開始於 Tableau Server 2024.2,如果 SAML (或站台 SAML)已設定並啟用功能設定(伺服器範圍或站台層級),可以透過身分提供程式 (IdP) 傳送的 SAML XML 回應中包含的自訂宣告來動態控制群組成員資格。

    設定後,在使用者驗證期間,IdP 會傳送包含兩個自訂群組成員資格宣告的 SAML 聲明:群組(https://tableau.com/groups)和群組名稱(例如,「Group1」和「Group2」)以將使用者聲明到其中。Tableau 會驗證該聲明,然後啟用對群組及其權限依賴這些群組的內容的存取。

    有關詳情,請參閱使用聲明的動態群組成員資格

    SAML XML 回應範例

    <saml2p:Response
      xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
        .....
        .....
      <saml2:Assertion
        .....
        .....
        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
        <saml2:AttributeStatement
      		xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
      		<saml2:Attribute
        		Name="https://tableau.com/groups"
    			NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
      			<saml2:AttributeValue
    				xmlns:xs="http://www.w3.org/2001/XMLSchema"
    				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    				xsi:type="xs:string">Group1
    			</saml2:AttributeValue>
    			<saml2:AttributeValue
    				xmlns:xs="http://www.w3.org/2001/XMLSchema"
    				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    				xsi:type="xs:string">Group2
    			</saml2:AttributeValue>
        	<saml2:Attribute>
        </saml2:AttributeStatement>
      </saml2:Assertion>
    </saml2p:Response>
感謝您的意見反應!已成功提交您的意見回饋。謝謝!