搭配 Okta 的 SAML
Okta SAML 驗證僅適用於 Pro 和 Enterprise 方案(包括自架託管和 Metabase Cloud)。
您也可以選擇性地設定群組映射,以自動將 Okta 使用者指派給 Metabase 群組。
請參閱使用 SAML 驗證以取得一般 SAML 資訊。
在 Metabase 中啟用基於 SAML 的 SSO
在管理區域的管理>設定區段中,前往驗證標籤,然後按一下 SAML 下方的設定。
您會看到類似這樣的 SAML 組態表單
您需要使用此表單中的資訊在 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 的一些資訊
- 在 Okta 中,前往您的 Metabase 應用程式整合頁面。
- 前往登入標籤。
- 按一下檢視 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 群組。
- 在 Okta 設定檔編輯器中,建立名為
metabaseGroups
的新使用者設定檔屬性,它可以是string
或string array
。 -
針對 Okta 中的每個使用者,使用其 Metabase 群組填寫
metabaseGroups
屬性。我們建議您在 Okta 中使用與 Metabase 中相同的群組名稱。
Metabase 群組不必對應到 Okta 使用者群組。如果您想要使用 Okta 使用者群組設定 Metabase 群組,請參閱將 Okta 使用者群組映射到 Metabase 群組。
您的 Okta 帳戶必須啟用
SAML_SUPPORT_ARRAY_ATTRIBUTES
,因為 Metabase 預期 Okta 將屬性作為陣列傳遞。如果您的 Okta 帳戶較舊,您可能需要聯絡 Okta 支援人員以啟用SAML_SUPPORT_ARRAY_ATTRIBUTES
。 -
在 Metabase 應用程式整合的 Okta SAML 設定中,新增具有值
user.metabaseGroups
(您剛建立的設定檔屬性)的新屬性陳述式MetabaseGroupName
- 在 Metabase SAML 設定中
- 開啟同步群組成員資格。
- 針對您新增至 Okta 使用者的每個群組,設定到 Metabase 群組的新映射。
-
在群組屬性名稱中,輸入
MetabaseGroupName
(SAML 屬性陳述式的名稱)。
將 Okta 使用者群組映射到 Metabase 群組
- 建立與 Metabase 群組對應的 Okta 使用者群組,並將其指派給 Okta 使用者。
-
在 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 使用者群組名稱,並將其作為陣列傳回。
您的 Okta 帳戶必須啟用
SAML_SUPPORT_ARRAY_ATTRIBUTES
,因為 Metabase 預期 Okta 將屬性作為陣列傳遞。如果您的 Okta 帳戶較舊,您可能需要聯絡 Okta 支援人員以啟用SAML_SUPPORT_ARRAY_ATTRIBUTES
。接下來,您需要告訴 Metabase 如何將 Okta 群組映射到 Metabase 群組。
- 在 Metabase SAML 設定中
- 開啟同步群組成員資格。
- 針對您新增至 Okta 使用者的每個群組,設定到 Metabase 群組的新映射。
-
在群組屬性名稱中,輸入
MetabaseGroupName
(SAML 屬性陳述式的名稱)。
疑難排解 SAML 問題
如需常見問題,請前往SAML 疑難排解。
延伸閱讀
閱讀其他Metabase 版本的文件。