搭配 Okta 的 SAML

Okta SAML 驗證僅適用於 ProEnterprise 方案(包括自架託管和 Metabase Cloud)。

  1. 在 Metabase 中啟用基於 SAML 的 SSO
  2. 在 Okta 中設定 SAML.
  3. 在 Metabase 中設定 SAML.

您也可以選擇性地設定群組映射,以自動將 Okta 使用者指派給 Metabase 群組。

請參閱使用 SAML 驗證以取得一般 SAML 資訊。

在 Metabase 中啟用基於 SAML 的 SSO

在管理區域的管理>設定區段中,前往驗證標籤,然後按一下 SAML 下方的設定

您會看到類似這樣的 SAML 組態表單

SAML form

您需要使用此表單中的資訊在 Okta 中設定 SAML。

在 Okta 中設定 SAML

在 Metabase 中設定 SAML 驗證之前,您需要在 Okta 中建立新的 SAML 應用程式整合。

在 Okta 中建立應用程式整合

從 Okta 管理主控台中,建立新的 SAML 應用程式整合,以便與 Metabase 搭配使用。

設定 Okta SAML 設定

若要設定 Okta 應用程式與 Metabase 的整合,您需要使用 Metabase 中管理面板 > 驗證 > SAML 區段中的資訊。

一般設定

Okta SAML Metabase SAML
單一登入 URL IdP 應重新導向的 URL。這是您的 Metabase 網站 URL – 應以 https:// 開頭,並以 /auth/sso 結尾。
對象 URI (SP 實體 ID) SAML 應用程式名稱(預設為「Metabase」)

屬性陳述式

在 Okta 應用程式 SAML 設定的屬性陳述式(選用)區段中,建立下列屬性陳述式

  • 電子郵件地址
  • 名字(名字)
  • 姓氏(姓氏)

即使 Okta 說這些是選用的,Metabase 也需要它們。Okta 會在驗證期間將這些屬性傳遞給 Metabase,以自動讓人員登入 Metabase。

名稱
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress user.email
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname user.firstName
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname user.lastName

Okta 中屬性陳述式的名稱應與 Metabase 中的屬性名稱一致(名稱區分大小寫)。如果您想要在 Okta 應用程式組態中使用非預設屬性名稱,您也需要在 Metabase 中管理面板 > 驗證 > SAML 中變更屬性欄位的名稱。

確保人員無法編輯其電子郵件地址屬性。若要讓人們登入您的 Metabase(或在首次登入時建立 Metabase 帳戶),您的 IdP 會將電子郵件地址屬性傳遞給 Metabase。如果人員可以變更電子郵件地址屬性,他們可能會存取非其擁有的 Metabase 帳戶。

Okta 判斷提示範例

您可以按一下預覽 SAML 判斷提示以檢視 Okta 產生的 XML 檔案。它看起來應該像這樣

<saml2:Assertion
    xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="id4170618837332381492734749" IssueInstant="2019-03-27T17:56:11.067Z" Version="2.0">
    <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://www.okta.com/Issuer</saml2:Issuer>
    <saml2:Subject>
        <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">userName</saml2:NameID>
        <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml2:SubjectConfirmationData NotOnOrAfter="2019-03-27T18:01:11.246Z" Recipient="https://metabase.mycompany.com/auth/sso"/>
        </saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotBefore="2019-03-27T17:51:11.246Z" NotOnOrAfter="2019-03-27T18:01:11.246Z">
        <saml2:AudienceRestriction>
            <saml2:Audience>my-metabase-app</saml2:Audience>
        </saml2:AudienceRestriction>
    </saml2:Conditions>
    <saml2:AuthnStatement AuthnInstant="2019-03-27T17:56:11.067Z">
        <saml2:AuthnContext>
            <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
        </saml2:AuthnContext>
    </saml2:AuthnStatement>
    <saml2:AttributeStatement>
        <saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
            <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
              Cam
            </saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
            <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
              Saul
            </saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
            <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
              cam@metabase.com
            </saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
</saml2:Assertion>

在 Metabase 中設定 SAML

在 Okta 中設定 SAML 應用程式後,您需要在 Metabase 中設定 SAML。您需要來自 Okta 的一些資訊

  1. 在 Okta 中,前往您的 Metabase 應用程式整合頁面。
  2. 前往登入標籤。
  3. 按一下檢視 SAML 設定指示

使用 Okta SAML 指示中的資訊填寫 管理面板 > 驗證 > SAML 中的 Metabase SAML 表單

Metabase SAML Okta SAML
SAML 身分提供者 URL 身分提供者單一登入 URL
SAML 身分提供者憑證 X.509 憑證*
SAML 身分提供者簽發者 身分提供者簽發者

*請務必包含任何標頭和頁尾註解,例如 ---BEGIN CERTIFICATE------END CERTIFICATE---

設定群組映射

您可以設定 Metabase 在人員登入時自動將其指派給 Metabase 群組。您需要建立 SAML 屬性陳述式,將群組資訊傳遞給 Metabase,然後設定 Metabase 讀取此屬性,並將其內容映射到 Metabase 群組。

您可以使用以下任一方法

使用使用者設定檔屬性指派群組

您可以建立自訂使用者設定檔屬性,並填入每個使用者的 Metabase 群組。

  1. 在 Okta 設定檔編輯器中,建立名為 metabaseGroups 的新使用者設定檔屬性,它可以是 stringstring arrayNew User Profile attribute
  2. 針對 Okta 中的每個使用者,使用其 Metabase 群組填寫 metabaseGroups 屬性。

    Metabase groups attribute

    我們建議您在 Okta 中使用與 Metabase 中相同的群組名稱。

    Metabase 群組不必對應到 Okta 使用者群組。如果您想要使用 Okta 使用者群組設定 Metabase 群組,請參閱將 Okta 使用者群組映射到 Metabase 群組

    您的 Okta 帳戶必須啟用 SAML_SUPPORT_ARRAY_ATTRIBUTES,因為 Metabase 預期 Okta 將屬性作為陣列傳遞。如果您的 Okta 帳戶較舊,您可能需要聯絡 Okta 支援人員以啟用 SAML_SUPPORT_ARRAY_ATTRIBUTES

  3. 在 Metabase 應用程式整合的 Okta SAML 設定中,新增具有值 user.metabaseGroups(您剛建立的設定檔屬性)的新屬性陳述式 MetabaseGroupName

    New attribute statement referencing the attribute

  4. Metabase SAML 設定
  • 開啟同步群組成員資格
  • 針對您新增至 Okta 使用者的每個群組,設定到 Metabase 群組的新映射。
  • 群組屬性名稱中,輸入 MetabaseGroupName(SAML 屬性陳述式的名稱)。

    Metabase group mapping

將 Okta 使用者群組映射到 Metabase 群組

  1. 建立與 Metabase 群組對應的 Okta 使用者群組,並將其指派給 Okta 使用者。
  2. 在 Metabase 應用程式整合的 Okta SAML 設定中,新增新的屬性陳述式 MetabaseGroupName,將類型設定為「基本」,並將值設定為

    Arrays.flatten(getFilteredGroups({"groupID1", "groupID2"}, "group.name", 100))
    

    其中 {"groupId1", "groupId2"} 中的群組 ID 是您想要映射到 Metabase 群組的群組。您可以在群組頁面的 URL 中找到 Okta 群組 ID:https://your-okta-url.okta.com/admin/group/GROUP_ID

    此運算式將擷取使用者所屬的 Okta 使用者群組名稱,並將其作為陣列傳回。

    New attribute statement for groups

    您的 Okta 帳戶必須啟用 SAML_SUPPORT_ARRAY_ATTRIBUTES,因為 Metabase 預期 Okta 將屬性作為陣列傳遞。如果您的 Okta 帳戶較舊,您可能需要聯絡 Okta 支援人員以啟用 SAML_SUPPORT_ARRAY_ATTRIBUTES

    接下來,您需要告訴 Metabase 如何將 Okta 群組映射到 Metabase 群組。

  3. Metabase SAML 設定
  • 開啟同步群組成員資格
  • 針對您新增至 Okta 使用者的每個群組,設定到 Metabase 群組的新映射。
  • 群組屬性名稱中,輸入 MetabaseGroupName(SAML 屬性陳述式的名稱)。

    Metabase group mapping

疑難排解 SAML 問題

如需常見問題,請前往SAML 疑難排解

延伸閱讀

閱讀其他Metabase 版本的文件。