SAML with Okta

Okta SAML 身份验证仅适用于 ProEnterprise 计划(包括自托管和 Metabase 云)。

  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 说明中的信息填写 Metabase SAML 表单,路径为 管理面板 > 身份验证 > 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 array新用户配置文件属性
  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 设置中,添加一个新的属性声明 MetabaseGroupName,其值为 user.metabaseGroups(您刚刚创建的配置文件属性)

    New attribute statement referencing the attribute

  4. Metabase SAML 设置
  • 开启同步组成员资格
  • 对于您添加到 Okta 用户的每个组,设置一个新的映射到 Metabase 组。
  • 组属性名称中,输入MetabaseGroupName(SAML 属性声明的名称)。

    Metabase group mapping

将 Okta 用户组映射到 Metabase 组

  1. 创建与 Metabase 组对应的 Okta 用户组,并将其分配给 Okta 用户。
  2. 在 Okta 的 Metabase 应用集成的 SAML 设置中,添加一个新的属性声明 MetabaseGroupName,将其类型设置为“Basic”,值设置为

    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 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗?提出修改建议。
© . This site is unofficial and not affiliated with Metabase, Inc.